参考官网链接:
https://developer.android.google.cn/guide/topics/resources/providing-resources?hl=zh-cn
前期准备,记录以下数值:
adb shell wm size
size前一个数值是横着的边,后一个数值是竖着的边
前面边长大说明是横屏,反之是竖屏
如:
1920x720 ,说明这是个横屏
1880x2000,说明这是个竖屏
adb shell wm density
density用于将分辨率换算成dp
如果分辨率是:1920x720
density是:240
则对应的dp:
1920/(240/160)= 1920/1.5 = 1280
1. 用sw做限定符(smallestWidth,短边)
1920x720 ,短边为720
1880x2000,短边为1880
假设density是:240
得到短边的dp,
1920x720 -> 720/1.5=480 把这个屏幕的资源放在sw480dp
1880x2000-> 2000/1.5=1333.33333
有小数点咋办? 直接向下取整 把这个屏幕的资源放在sw1330dp(1333dp理论上也可以,不过我喜欢10的倍数)
2. 用可用宽度高度做限定符
打印一下这个代码的结果:
// 获取 WindowManager
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
// 获取 DisplayMetrics
val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics)
// 获取屏幕宽度和高度(像素)
val widthPx = displayMetrics.widthPixels
val heightPx = displayMetrics.heightPixels
// 获取屏幕密度
val density = displayMetrics.density
// 将像素转换为 dp
val widthDp = widthPx / density
val heightDp = heightPx / density
// 打印屏幕的宽度和高度(dp)
logger.debug("dddddd density: $density")
logger.debug("dddddd 屏幕宽度 (dp): $widthDp")
logger.debug("dddddd屏幕高度 (dp): $heightDp")
dddddd 屏幕宽度 (dp): 1146.6666
dddddd 屏幕高度 (dp): 480.0
直接继续向下取整填空得到:
w1100dp-h480dp