如何在 Android Jetpack Compose 中将 Dp 转换为像素?

时间:2021-01-27 15:02:47

标签: android android-jetpack android-jetpack-compose

大多数 Jetpack Compose API 使用 Dp 作为尺寸单位,但有时需要像素值。如何将 dp 值转换为 px?仅作为示例,有 graphicsLayer() 修饰符接受以像素为单位的 translationX/Y 参数。

2 个答案:

答案 0 :(得分:15)

toPx() 接口定义了 roundToPx()Density 方法,你可以这样使用:

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()extension function 类的 Dp,您可以将其视为 Dp 类方法。但由于 toPx() 是在 Density 接口内定义的,除非您提供密度作为 receiver,否则您无法使用它。最后,您可以从名为 CompositionLocalLocalDensity 获得电流密度。

答案 1 :(得分:-1)

Dp.roundToPx(),

这应该对你有用。