学无先后,达者为师

网站首页 编程语言 正文

android屏幕适配sw规则

作者:jzlhll123 更新时间: 2022-08-30 编程语言
## 获取屏幕宽度,截图来看尺寸也行
adb shell screencap -p /sdcard/a.png
adb pull /sdcard/a.png
#或者
adb shell dumpsys display| grep StableDisplay       

#获取density
adb shell wm density

adb shell dumpsys display| grep StableDisplay       
  mStableDisplaySize=Point(1024, 600)
      StableDisplayWidth=1024
      StableDisplayHeight=600

 adb shell wm density
Physical density: 160

通过获取到的屏幕短的边长即(sw, smallWidth),
比如我司的机器有三款,分别为:
10寸,1280800 density 160
7寸,1024
600 density 160
6寸,960*480 density 160

计算sw dp公式:160*sw/density
即,
分别目标 为:sw800dp, sw600dp, sw480dp。

对于xml的sw规则而言,他的规则是:
规则:优先匹配进入到能容许的sw尺寸文件;如果不存在,则往下缩小进入,直到匹配到停止,或者坠入默认values文件夹。
如果你写了sw240dp, sw320dp的资源,基本他就不会再进入到默认的values。 因为他确实已经十分的小,任意的sw机器基本能进入。

举例:你有5个文件夹,分别为sw1000dp, sw800dp, sw600dp, sw480dp, sw240dp.

从高的尝试匹配,比如去逐渐缩小,比如我的7寸机器,不能进入sw1000dp;不能进入800,只能进入sw600dp,则他会优先匹配到sw600dp里面的资源。
同样的,我的6寸会进入到sw480dp。

但是我现在想以最少代码来编写,以及默认的values我们还没有说。

比如我只创建默认values。再创建sw600dp,没有其他目录。
对于我的3款机器,10寸和7寸都往sw600dp里面适配进去;而6寸则由于本身是480,进不去,只能跌入到默认。

速记:

  1. 计算sw 目标文件夹dp公式:160*sw/density
  2. sw的规则是胖子过门检测机,从默认的values->sw小dp->sw大dp的顺序,一直到过不去的那个门,退回1个,就是他能进的门,即能匹配到的文件夹。

原文链接:https://blog.csdn.net/jzlhll123/article/details/125170986

栏目分类
最近更新