如何在 Android Jetpack Compose 中将 Dp 转换为像素?
Posted
技术标签:
【中文标题】如何在 Android Jetpack Compose 中将 Dp 转换为像素?【英文标题】:How to convert Dp to pixels in Android Jetpack Compose? 【发布时间】:2021-05-01 10:39:43 【问题描述】:大多数 Jetpack Compose API 使用 Dp 作为尺寸单位,但有时需要像素值。如何将 dp 值转换为 px?举个例子,graphicsLayer() 修饰符接受 translationX/Y
像素参数。
【问题讨论】:
【参考方案1】:Density接口定义了toPx()
和roundToPx()
方法,你可以这样使用:
import androidx.compose.ui.platform.LocalDensity
val pxValue = with(LocalDensity.current) 16.dp.toPx()
// or
val pxValue = LocalDensity.current.run 16.dp.toPx()
如果您是 Kotlin 语言的新手,这样的表达式可能看起来令人困惑,所以让我们分解一下,看看它是如何工作的。 toPx()
是Dp
类的extension function,你可以把它看成是Dp
类的方法。但是由于toPx()
是在Density 接口内定义的,所以除非您提供密度为receiver,否则您不能使用它。最后,您可以从名为LocalDensity 的CompositionLocal 获取电流密度。
【讨论】:
AmbientDensity 会被称为 CompositionLocalDensity 吗? (其实现在叫LocalDensity
,我查了)
@EpicPandaForce 谢谢!确实,Ambient
s 被命名为 CompositionLocal
s,因为 alpha-12
,我已经更新了答案
很好的语法解释;我来这里是为了寻找那究竟是什么巫术!
如果你想从像素转换为Dp,那就是LocalDensity.current.run 16.toDp()
以上是关于如何在 Android Jetpack Compose 中将 Dp 转换为像素?的主要内容,如果未能解决你的问题,请参考以下文章
Android Jetpack Navigation:如何在 OnNavigatedListener 中获取目的地的片段实例?