Android真实设备xxx-hdpi

24

我将发布我的应用程序,这是一个1.2Mb的apk文件,其中包括4种不同格式(ldpi、mdpi、hdpi、x-hdpi)的大约120个图标。

如果我添加xx-dpi和xxx-hdpi的图标,apk文件会变得更大,加载时间会增加。
有很多入门级设备内存非常低,我希望我的应用程序在任何地方都能运行。

我真的需要添加xx-hdpi吗?

是否真的有某个实际设备需要xxx-hdpi呢?


5
应用程序的加载时间并不取决于其大小,而是取决于一次性处理了多少内容。不要同时处理所有事情,你的应用程序就会表现良好。 - RED_
@RED_ 是的,在使用adb测试时,我似乎看到了一些减速现象,但也许是在安装过程中... - j.c
8个回答

31

你其实不需要使用xxxhdpi。它只是因为Nexus 5的启动器图标缩放方式而被引入。

编辑 当我在2014年1月回答时,Nexus 5是唯一使用xxxhdpi的设备。现在许多设备,包括Nexus 6和LG G3都在使用它。因此,在您的应用程序中包含它是一个好主意。


2
由于Nexus 5的默认启动器使用更大的图标,因此引入了xxxhdpi,以便图标在Nexus 5的启动器上仍然看起来很好。 - japk
1
哦,现在我明白了!我不知道KitKat使用更大的启动器图标!http://cdn.arstechnica.net/wp-content/uploads/2013/11/app-drawerscale.jpg - j.c
7
作为一名 Nexus 5 的用户,请您千万不要省略高质量图标。这样看起来会很凌乱和模糊。 - George Hilliard
11
LG G3手机默认使用xxxhdpi像素密度。 - josebama
7
@MattQuigley 那个页面有点过时了;谷歌已经表示将drawable-xxxhdpi资源包含在APK中没有问题。 - CloudyMusic
显示剩余3条评论

9

我们必须为Nexus 6、LG G3和三星Galaxy Note 4在我们的应用程序中添加xxxhdpi。未来将会有更多的xxxhdpi设备。


10
当然,这种疯狂的提高像素密度的趋势永远不会停止。 - j.c

6

对于大多数图像,您不需要使用xxxhdpi。您只需要为启动器图标使用xxxhdpi。请参见http://developer.android.com/guide/practices/screens_support.html

除了启动器图标之外,您不应该使用xxxhdpi限定符来制作UI元素。

以上引用非常清楚。在他们提供的示例文件夹布局中,他们展示了所有密度的res/drawable文件夹,直到-xxhdpi,但是他们展示了res/mipmap文件夹直到-xxxhdpi。以下是更多引用:

xxxhdpi用于额外-extra-extra-high-density(xxxhdpi)的资源(〜640dpi)。仅适用于启动器图标,请参见上面的注释。

只有在xxhdpi设备上需要显示比平常更大的启动器图标时,才需要使用mipmap-xxxhdpi限定符。您无需为应用程序的所有图像提供xxxhdpi资源。


有趣的是:“180x180(3.0倍)用于超高密度显示”。好吧,1.0倍是48像素,所以48 * 3 = 144。他们从哪里得到的180呢? - Csaba Toth

5

根据Android图标文档说明:

一些设备会将启动器图标放大高达25%。例如,如果您的最高密度启动器图标图像已经是extra-extra-high density,则缩放过程会使其显示不够清晰。因此,您应该在drawable-xxxhdpi目录中提供更高密度的启动器图标,系统将使用它而不是缩放较小版本的图标。

注意:只有在需要在xxhdpi设备上显示比通常更大的启动器图标时才需要使用drawable-xxxhdpi限定符。您不需要为应用程序的所有图像提供xxxhdpi资产。

更多信息请参见:http://developer.android.com/design/style/iconography.html


Android文档指出:不需要xxxhdpi分辨率的支持。请参见https://developer.android.com/guide/practices/screens_support.html#xxxhdpi-note。 - Mac_Cain13

5
你不需要LDPI,因为安卓会将HDPI缩小至LDPI。请注意:安卓也支持低密度(LDPI)屏幕,但通常你不需要创建此尺寸的自定义资源,因为安卓会将你的HDPI资源缩小1/2以匹配预期大小。来源:https://developer.android.com/design/style/iconography.html

1
谢谢,这是有用的信息。 - j.c

4
我不知道是否有需要xxx-hdpi的设备,但是xx-hdpi还没有被广泛使用。但是同样适用于ldpi,几乎没有设备需要ldpi。如果只做mdpi、hdpi和xhdpi,那就没问题了。如果设备需要更大或更小的尺寸,Android会自动缩放到正确的尺寸。

以下是Android关于此事的说明:

提供不同的位图可绘制对象以适应不同的屏幕密度
默认情况下,Android会对您的位图可绘制对象(.png、.jpg和.gif文件)和Nine-Patch可绘制对象(.9.png文件)进行缩放,以便在每个设备上呈现出适当的物理大小。例如,如果您的应用程序仅为基准中等屏幕密度(mdpi)提供位图可绘制对象,则系统会在高密度屏幕上将它们放大,并在低密度屏幕上将它们缩小。这种缩放可能会导致位图中的伪像。为确保您的位图效果最佳,您应该在不同分辨率的不同屏幕密度下包含备用版本。您可以使用的配置限定符是ldpi(低)、mdpi(中)、hdpi(高)和xhdpi(超高)。例如,高密度屏幕的位图应放在drawable-hdpi/中。
您可以在此处找到文档:

https://developer.android.com/guide/practices/screens_support.html

希望这可以帮到你。

我以为Nexus 5使用的是xx-hdpi类别,不是吗? - Ektos974
我不确定,但我知道xperia z可以。这是一个解释它的答案:https://dev59.com/RmYs5IYBdhLWcg3wAfPO#13215729 - Kevin van Mierlo
但是在xx-hdpi上使用xhdpi不会显得很模糊吗?现在iPhone6 Plus已经使用了大约相当于xx-hdpi的3倍图像资源,我想应该会有一些相当显著的差异。 - xji
@AnonJ 我的应用程序中从未出现过任何模糊图像(我有三星S4,我认为它也具有xxhdpi)。但确实最好为xxhdpi制作图像。 - Kevin van Mierlo

2

我认为你应该专注于最受欢迎的屏幕密度,它们是hdpi、xhdpi和xxhdpi。请参考这个链接,了解每个密度的当前全球平均分布。


-5

忘掉一切,让它变得简单!

只需将最高分辨率的图像存储在一个文件夹中。可以存储在drawable-hdpi中,并从其余的drawable文件夹中删除其他图像。

我已经在各种设备上进行了测试,效果非常好...


1
因为这并没有提供额外的信息,所以被踩了。是的,有自动缩放,那就是问题的背景。另外,顺便说一下:xxxhdpi目前是定义的最高分辨率。 - Stan Kurdziel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接