Compose 屏幕适配方案

1,889 阅读1分钟

Compose Size目前只支持Compose.Dp类不能很好的还原设计稿.

关于屏幕适配方案 juejin.cn/post/684490…

由上blog得出dp会转化成px,Compose Dp类也是按照Tradition View System 的Dp逻辑运行. 所以得出结论,只需要吧适配后的值转换成Px在用Dp算法换算成Dp值即可完成适配.

代码如下: 注:这里用的是今日头条屏幕适配的第三方开源库 github.com/JessYanCodi…

val Number.pt: Int get() = (toFloat() * (Resources.getSystem().displayMetrics.widthPixels.toFloat() / AutoSizeConfig.getInstance().designWidthInDp.toFloat())).toInt()

fun Number.toComposeDp() = Dp((toFloat() / Resources.getSystem().displayMetrics.density))

使用方法Modifer.size(10.pt.toComposeDp)

10=设计稿标注的尺寸 10.pt= 设计稿原尺寸经过适配后的Px值 toComposeDp 根据适配后的Px值,在根据Dp算法得出Dp。 那么最终使用的是根据适配后的Px值.

字体Sp同理

fun Number.toComposeSp()= (toFloat() / Resources.getSystem().displayMetrics.scaledDensity).sp