所有Android文档都提到了“drawable”目录。但是,当我在Eclipse中创建一个Android项目时,它不会创建一个“/ res / drawable”目录,但它会创建“/ res / drawable-ldpi”和“/ res / drawable-mdpi”。我想这些与像素分辨率有关,但这究竟发生了什么?当我逐步完成教程时,我手动创建了一个“可绘制”目录并将我的资源放在那里,但我需要吗?如果只有“drawable- {l | m} dpi”存在,对“/ res / drawable /”的引用是否有效?
答案 0 :(得分:6)
我相信这是在Android 1.6中添加的。这一切都在这里解释:http://developer.android.com/guide/practices/screens_support.html
答案 1 :(得分:3)
是的,您需要在Eclipse中创建一个default / res / drawable目录。
如果要使用-hdpi / -mdpi / -ldpi文件夹,则需要制作单独的xml布局以引用它们。
http://developer.android.com/guide/practices/screens_support.html
答案 2 :(得分:2)
我认为它与您如何生成Android项目有关。通常我的创建一个hdpi,mdpi和ldpi文件夹。基本上,“drawable”是默认值。 如果你拥有hdpi文件夹中的所有资源,并尝试在ldpi设备上运行它,我相信你会得到某种例外(我没有测试过这个,但我相信是这样的)。解释了没有默认资源的情况的详细解释here。
您应该在主“drawable”文件夹中保留默认的资源集合(是的,您可能需要手动创建)只是为了安全起见,并确保与旧版本的Android兼容。 Android将首先检查特定的密度文件夹,但如果找不到该密度的特定资源,它将回滚到默认的drawable文件夹。
答案 3 :(得分:1)
当为各种屏幕密度创建新应用程序时,最新的SDK会为您创建大量可绘制文件夹,但奇怪的是默认情况下从未为我创建过默认的默认“drawable”文件夹。
如果为默认情况下当前创建的所有六个密度文件夹复制并调整图形资源的大小,从drawable-ldpi到drawable-xxxhdpi,您的应用程序大小将会膨胀为一个沉重的图形应用程序,更不用说其他问题突然出现了堆大小崩溃(它们应为不同的设备堆大小提供不同的文件夹)。
目前我将所有图片放在drawable-hdpi文件夹中,但xhdpi,xxhdpi和xxxhdpi文件夹中更高分辨率的启动器图标副本除外。我没有在mdpi和ldpi文件夹中放置任何内容,实际上已删除这些文件夹以保持应用程序清洁。我也可以将drawable-hdpi重命名为drawable,但保留了默认名称,因为在这种情况下它仍然是默认文件夹。
答案 4 :(得分:1)
In this answer,@ RomainGuy提到您应该将相应的图像保存到各自的文件夹(mdpi,xhdpi),以及其他来源,例如drawable
文件夹中的drawables的.xml文件。
例如,如果你要使用hdpi设备,而你没有在hdpi文件夹中放置任何图像,它就不会崩溃;它将改为从下一个最适合的文件夹(即mdpi)调整图像大小并扩展图像。
答案 5 :(得分:0)
在Android 1.6中添加了Hdpi,mdpi和ldpi限定符。如果您要支持Android 1.5,您应该将所有medium-dpi drawables放入默认的drawable目录。
您可以阅读here。