我有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. 屏幕关闭时上传任务会发生什么?
- 4. 屏幕密度限定符
- 5. Android屏幕密度计算
- 6. Android:屏幕密度混乱?
- 7. Android筛选资源按屏幕大小和密度排列
- 8. Android-为每个屏幕密度创建资源
- 9. 即使没有按下按键,我如何在屏幕上发生什么?
- 10. 为什么屏幕上有多个virtualenvs?
- 11. 如何在其他屏幕发生事件时更新屏幕?
- 12. 以多种屏幕分辨率填充整个屏幕,密度
- 13. 屏幕图像没有出现在屏幕上
- 14. java中没有出现在屏幕上的加载器屏幕
- 15. UI屏幕“加载”时会发生什么?
- 16. 离子2:在启动屏幕期间会发生什么?
- 17. 屏幕旋转时碎片返回堆栈会发生什么?
- 18. 手机屏幕关闭时会发生什么?
- 19. Android没有屏幕密钥(仅语音)
- 20. 如何让黑莓屏幕上的标题屏幕高度?
- 21. 如何获得屏幕密度?
- 22. 为什么没有覆盖整个屏幕宽度?
- 23. 为什么屏幕不会变色?
- 24. 屏幕没有导航反应原生
- 25. 覆盖div不再在屏幕高度发生变化后填满屏幕
- 26. 许多屏幕上的全屏幕(WPF)
- 27. 将屏幕移动到屏幕上
- 28. 添加屏幕宽度的一类,如果屏幕宽度小于960像素
- 29. MS CRM HTML web资源加载屏幕
- 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