2013-04-09 59 views
1

我有3种不同尺寸的资源。我已将其中一个放入drawable-hdpi,一个放入drawable-mdpi,另一放入drawable-xhdpi。现在我想知道如果我在具有ldpi(或tvdpinodpi,如果可能的话)上运行该应用程序会发生什么情况? 如果将一个资源也放在drawable文件夹中,那么会更好吗?如果屏幕密度没有资源,屏幕上会发生什么?

+0

http://stackoverflow.com/questions/11752997/how-mdpi-hdpi-xhdpi-folder-works – 2013-04-09 16:32:51

+1

Android会自动选择最适合的drawable为当前设备。 – scf 2013-04-09 16:33:22

回答

3

您的系统将选择“最佳”可用资源并相应地调整其大小。使用ldpi时,可能需要一个hdpi并将其削减一半。

随着tvdpi,它可能是我,但我通常惊讶于它为我挑选什么。

+0

因此,无论如何,我永远不会得到一个异常或东西,如果没有指定的资源? – Xander 2013-04-09 16:36:14

+1

@ Merlin:对于drawables,这是正确的。尽管大多数其他资源类型需要精确匹配,因为没有自动转换它们的方法。对于这些情况,如果您请求资源并且没有匹配,则会发生'ResourceNotFoundException'。 – CommonsWare 2013-04-09 16:40:29

+0

@CommonsWare好的,很明显,谢谢! – Xander 2013-04-09 16:47:17

2

在大多数设备上,Android会从其他可绘制文件夹中选择最近的可用资源(如mdpi不可用,则从ldpi或hdpi中选取)。

但是,在某些设备上,系统可能无法从其他文件夹获取资源,这是由于实施错误。

最佳做法是,你应该始终使每个资源的副本中是完全不合格的文件夹(可绘制,价值观等)/

+0

“但是,在某些设备上,尤其是三星,系统不会从其他文件夹中获取资源。” - 嗯? – CommonsWare 2013-04-09 16:39:13

+0

@CommonsWare我基于去年在Android聊天室中进行的讨论,其中有人的应用程序不断崩溃,因为少数三星设备未能从其他资源文件夹加载资源。我试图找到它,但是SO的聊天搜索需要相当准确的措辞,我不记得。 – 2013-04-09 16:40:30

+0

这样的设备不会通过CTS,AFAIK,所以我很难相信这实际上是这种情况。如果您可以识别出具有此行为的某些设备,请告诉我,因为我想进行一些研究。 – CommonsWare 2013-04-09 16:41:23

0

你必须要小心,在绘制对象的文件夹放图像,无需任何修饰词。不合格文件夹中的图像与mdpi中的图像相同,因此如果您在非限定文件夹中有大图像,并且您尝试将其分配给xhdpi手机中的ImageView,则Android会尝试放大图像,并可能它会创建一个“在XXXXXX字节分配上的内存不足”