如何找到手机的密度桶?

Lit*_*ild 4 android screen dpi density-independent-pixel

稍微有点noob-ish问题,但在计算手机密度桶的时候我感到很困惑.我将把我的Galaxy S3作为一个例子.

它的分辨率1280 x 720意味着它具有306 dpi.现在,参考下面的图表,我的手机属于该hdpi类别,因为它的屏幕数量240 dpi超过了320 dpi所需数量xhdpi.所以,手机是853 x 480 DP(除以1.5)

但是,我手机上的屏幕信息应用程序告诉我它是一个xhdpi屏幕.所以,手机是640 x 360 DP(除以2).

我怎么知道手机的密度桶是什么?

在此输入图像描述

更新:
我正在尝试为我所在国家/地区的前10款Android手机设计我的应用.因此,我正在计算他们在DP中的大小,以根据他们的"最小宽度DP"设计UI.这不是一次性的大小计算.

323*_*3go 10

如果您想知道一次,您可以获得像ScreenInfo这样的应用程序并运行它.如果您想以编程方式了解,可以添加密度文件夹,例如values-mdpivalues-xhdpi,将xml文件放入其中,例如whoami.xml使用以下内容:

<resources>
    <string name="density_bucket">mdpi</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

并且,分别为:

<resources>
    <string name="density_bucket">xhdpi</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

然后从应用程序查询:

String densityBucket = getResources().getString( R.string.density_bucket );
Run Code Online (Sandbox Code Playgroud)

  • 我回答了你问的问题。你问错问题了吗?您的问题中没有任何地方表示您正在请求推荐站外资源,这本来就是题外话。 (2认同)

Ste*_*yle 10

嘿,我认出那张图表!主要是因为我创造了它:D.为了澄清,该图表显示了每个密度桶的基线dpi,但不能用于确定设备应归类为哪个密度桶.也就是说,下图显示了如何将设备推广到密度桶中,您可以看到它们的dpi可能高于或低于它们所属的桶.

密度桶概括

现在回答你的问题,不幸的是,没有任何保证的方法可以知道设备将完全基于其规格的密度桶.这是因为设备制造商能够选择密度桶.大多数情况下,他们会选择最接近设备实际dpi的桶**.幸运的是,谷歌已经收集了一系列常见设备,以及它们的屏幕尺寸dp和密度桶.这应该可以让您了解如何正确支持最常见的屏幕尺寸.

**注意:有些设备有自己特殊的密度桶.最值得注意的是,Nexus 7(2012)为213dpi(tvdpi),Nexus 5X为420dpi,Nexus 6和6P为560dpi.这些设备从其他密度版本中获取资产并进行扩展.


Sho*_*uri -1

我认为 Android 试图找到“最佳匹配”。所以如果306在240和320之间,它更接近320。所以它会使用xhdpi。你可以在这里阅读更多。引用官方文档链接:

根据当前屏幕的尺寸和密度,系统使用应用程序中提供的任何特定于尺寸和密度的资源。例如,如果设备具有高密度屏幕并且应用程序请求可绘制资源,则系统会查找与设备配置最匹配的可绘制资源目录。根据其他可用的替代资源,带有 hdpi 限定符的资源目录(例如drawable-hdpi/)可能是最佳匹配,因此系统使用此目录中的可绘制资源。