android 如何匹配layout资源

安卓里面是怎样根据不同的分辨率匹配不同的布局文件,布局文件夹有两种不同的命名方式l ayout-sw360dp和l ayout-1280x720.这两种命名方式有什么区别,如果同时存在,会优先加载哪一个?

先来说下layout-1280x720,这个很简单就是根据分辨率来进行适配,但是我在全面屏的手机上面测试不成功。我建了一个layout-1280x640的文件夹,运行在分辨率为1280x640的机器上,但是文件夹里的资源并未被加载,如果有知道原因的朋友可以在下面评论。

然后是layout-sw360dp,安卓系统里面有很多这样的命名方式。看了许多大神的文章,这篇写的很清楚,我也验证过。

点击打开链接

这里copy一些文章中的内容:

sw不是software的,意思,我猜是shortest width,最短的宽度。
sw-xxxx-dp的计算公式是  sw *160/dpi
比如 1280*800, sw 是800
     480*800, sw 是480
没有Android源码的可以通过 adb shell getprop ro.sf.lcd_density 获得。
通过公式 sw*160/dpi 计算出结果之后,选择一个比这个结果小,而又最接近这个值的dp。
land是横屏,port是竖屏。

如果是同时存在两种文件夹的命名,我测设试过会有优先匹配layout-sw360dp文件夹的内容。


猜你喜欢

转载自blog.csdn.net/qq_32072451/article/details/80097693
今日推荐