所以我将以下内容放在 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 文件夹?
答案 0 :(得分:2)
简化您为多个用户界面设计的方式 屏幕,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,则不会始终使用默认目录。在您的情况下,它已将较高密度的资源缩减为低密度。
我希望现在很清楚。