了解android值/维度

时间:2017-02-25 03:28:45

标签: android xml android-layout android-view

所以我将以下内容放在 values / dimens &的值/梦诗-MDPI

<dimen name="rv_height">220dp</dimen>
<dimen name="rv_width">280dp</dimen>

以及 values-xxhdpi / dimens

中的以下内容
<dimen name="rv_height">260dp</dimen>
<dimen name="rv_width">320dp</dimen>

我的问题是,当我在 480 x 800 hdpi API 17模拟器上运行时,为什么它会从 xxhdpi 文件夹加载尺寸值,而不是常规 dimen dimens-mdpi 文件夹?

1 个答案:

答案 0 :(得分:2)

根据Official docs

  

简化您为多个用户界面设计的方式   屏幕,Android划分实际屏幕尺寸和范围   密度为:

     

ldpi(低)~120dpi

     

mdpi(中)~160dpi

     

hdpi(高)~240dpi

     

xhdpi(超高)~320dpi

     

xxhdpi(extra-extra-high)~480dpi

     

xxxhdpi(extra-extra-extra-high)~640dpi

修改

我会试着向你解释一下:

hdpi上480 px的设备有320 dp,因为从docs开始,“在240 dpi屏幕上,1 dp等于1.5物理像素”。表示400 px /1.5 = 320 dp。

现在,你有 values / dimens &amp; values / dimens-mdpi &amp;&amp;的值-xxhdpi /梦诗

再次根据文档

  

但是,当系统正在寻找密度特定的资源时   并且没有在密度特定的目录中找到它,它不会   始终使用默认资源。系统可以改为使用其中之一   其他密度特定的资源,以提供更好的   缩放时的结果。例如,在寻找低密度时   资源,它不可用,系统更喜欢按比例缩小   高密度版本的资源,因为系统很容易   将高密度资源缩小到低密度0.5倍,   与通过缩放中密度资源相比,具有更少的工件   因子0.75。

结论:如果缺少res-directory,则不会始终使用默认目录。在您的情况下,它已将较高密度的资源缩减为低密度。

我希望现在很清楚。