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