我有3种不同尺寸的资源。我已将其中一个放入drawable-hdpi
,一个放入drawable-mdpi
,另一放入drawable-xhdpi
。现在我想知道如果我在具有ldpi
(或tvdpi
或nodpi
,如果可能的话)上运行该应用程序会发生什么情况? 如果将一个资源也放在drawable
文件夹中,那么会更好吗?如果屏幕密度没有资源,屏幕上会发生什么?
回答
您的系统将选择“最佳”可用资源并相应地调整其大小。使用ldpi时,可能需要一个hdpi并将其削减一半。
随着tvdpi,它可能是我,但我通常惊讶于它为我挑选什么。
因此,无论如何,我永远不会得到一个异常或东西,如果没有指定的资源? – Xander 2013-04-09 16:36:14
@ Merlin:对于drawables,这是正确的。尽管大多数其他资源类型需要精确匹配,因为没有自动转换它们的方法。对于这些情况,如果您请求资源并且没有匹配,则会发生'ResourceNotFoundException'。 – CommonsWare 2013-04-09 16:40:29
@CommonsWare好的,很明显,谢谢! – Xander 2013-04-09 16:47:17
在大多数设备上,Android会从其他可绘制文件夹中选择最近的可用资源(如mdpi不可用,则从ldpi或hdpi中选取)。
但是,在某些设备上,系统可能无法从其他文件夹获取资源,这是由于实施错误。
最佳做法是,你应该始终使每个资源的副本中是完全不合格的文件夹(可绘制,价值观等)/
“但是,在某些设备上,尤其是三星,系统不会从其他文件夹中获取资源。” - 嗯? – CommonsWare 2013-04-09 16:39:13
@CommonsWare我基于去年在Android聊天室中进行的讨论,其中有人的应用程序不断崩溃,因为少数三星设备未能从其他资源文件夹加载资源。我试图找到它,但是SO的聊天搜索需要相当准确的措辞,我不记得。 – 2013-04-09 16:40:30
这样的设备不会通过CTS,AFAIK,所以我很难相信这实际上是这种情况。如果您可以识别出具有此行为的某些设备,请告诉我,因为我想进行一些研究。 – CommonsWare 2013-04-09 16:41:23
你必须要小心,在绘制对象的文件夹放图像,无需任何修饰词。不合格文件夹中的图像与mdpi中的图像相同,因此如果您在非限定文件夹中有大图像,并且您尝试将其分配给xhdpi手机中的ImageView,则Android会尝试放大图像,并可能它会创建一个“在XXXXXX字节分配上的内存不足”
- 1. Android屏幕尺寸资源
- 2. Android屏幕密度计算
- 3. Android-为每个屏幕密度创建资源
- 4. 以多种屏幕分辨率填充整个屏幕,密度
- 5. 屏幕图像没有出现在屏幕上
- 6. 离子2:在启动屏幕期间会发生什么?
- 7. Android没有屏幕密钥(仅语音)
- 8. 如何让黑莓屏幕上的标题屏幕高度?
- 9. 为什么没有覆盖整个屏幕宽度?
- 10. 屏幕没有导航反应原生
- 11. 将屏幕移动到屏幕上
- 12. 许多屏幕上的全屏幕(WPF)
- 13. 覆盖div不再在屏幕高度发生变化后填满屏幕
- 14. 添加屏幕宽度的一类,如果屏幕宽度小于960像素
- 15. MS CRM HTML web资源加载屏幕
- 16. Android |获取屏幕高度,宽度和屏幕宽度,高度
- 17. 有没有办法在GNU屏幕中自动分割屏幕?
- 18. 所有屏幕兼容屏幕
- 19. 什么是GNU屏幕?
- 20. 按屏幕上
- 21. JTextArea将不会“屏幕”到屏幕上的正确位置
- 22. 如果我支持最低API 14,我不必担心什么屏幕密度?
- 23. UIViewController没有填充屏幕
- 24. 没有名称的屏幕
- 25. 屏幕到屏幕命令
- 26. 让屏幕飞越屏幕
- 27. 具有相同密度屏幕的Android密度独立性
- 28. cocos2d屏幕效果
- 29. 为什么它没有显示输出屏幕上串
- 30. Android:为什么没有在屏幕上显示?
http://stackoverflow.com/questions/11752997/how-mdpi-hdpi-xhdpi-folder-works – 2013-04-09 16:32:51
Android会自动选择最适合的drawable为当前设备。 – scf 2013-04-09 16:33:22