【安卓笔记】异形屏适配(没有理论解释,直接照着用)

参考官网链接:

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值