Android如何在屏幕密度之间进行选择

时间:2016-04-29 08:13:40

标签: android xml android-studio pixel android-resources

例如,我在 ldpi mdpi xhdpi 文件夹中提供了一些图片。

当我在具有 hdpi 密度的设备上运行应用时,会选择哪种资源 - ldpi mdpi

3 个答案:

答案 0 :(得分:3)

取自http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch

  

如果没有匹配的资源可用,系统将使用默认值   资源并根据需要向上或向下扩展以匹配当前   屏幕大小和密度“默认”资源是那些不是   用配置限定符标记。例如,资源中   drawable /是默认的可绘制资源。系统假设   默认资源是针对基线屏幕大小而设计的   密度,这是正常的屏幕尺寸和中等密度。因此,   系统将默认密度资源扩展为高密度   适当时,屏幕和向下用于低密度屏幕。然而,   当系统正在寻找密度特定的资源时   没有在密度特定的目录中找到它,它不会总是使用   默认资源。系统可以改为使用另一个系统中的一个   密度特定的资源,以便在何时提供更好的结果   缩放。例如,在寻找低密度资源时   不可用,系统更喜欢缩小高密度   资源的版本,因为系统可以轻松扩展   高密度资源低至低密度0.5倍   与通过a缩放中密度资源相比,更少的工件   因子0.75。

答案 1 :(得分:2)

在这种情况下,android选择** mdpi *。 您可以阅读有关How Android Finds the Best-matching Resource

的更多信息

答案 2 :(得分:1)

考虑MDPI为1.然后,LDPI为0.75,HDPI为1.5。这意味着,如果您在MDPI屏幕上有一个可绘制的,例如50x50,则在LDPI屏幕上必须为~37x37,在HDPI屏幕上为75x75。

如果您没有为每个密度提供特殊的drawable,Android将自动缩放最接近的一个。

您不应该将设备的DPI与屏幕尺寸和/或像素数和/或分辨率和/或宽高比有任何关系。设备可能非常小并且具有HDPI屏幕或非常大且具有LDPI屏幕

  

ldpi用于低密度(ldpi)屏幕的资源(~120dpi)。   mdpi用于中密度(mdpi)屏幕的资源(~160dpi)。 (这是   基线密度。)hdpi用于高密度(hdpi)屏幕的资源   (〜240dpi)。 xhdpi用于超高密度(xhdpi)屏幕的资源   (〜320dpi)。 xxhdpi额外高密度资源(xxhdpi)   屏幕(~480dpi)。 xxxhdpi资源   额外超高密度(xxxhdpi)使用(~640dpi)。用它来做   仅限启动器图标,请参阅上面的注释。

请检查http://developer.android.com/guide/practices/screens_support.html并回答https://stackoverflow.com/a/6373533/2826147