![](/img/trans.png)
[英]Best practice to implement startActivity using ViewModel in Jetpack Compose
[英]What is the best practice using dp and sp dimensions in Jetpack Compose?
我想了解如何更好地在 Compose 项目中使用 dp 和 sp 值。 我检查了几个开源 Compose 项目,其中大多数都在对维度进行硬编码。 但这绝对不是一种支持灵活性和不同屏幕尺寸的方法。 我现在看到了几种方法:
dimens.xml
的旧方法并直接在调用dimensionResource()
的组合函数中获取值。dimens.xml
中引用了 dimens.xml 的值。 例如:object AppDimensions {
val paddingSmall = dimensionResource(R.dimen.padding_small)
...
}
dimens.xml
并针对不同的屏幕尺寸实现自己的逻辑。 例如:object AppDimensions {
val paddingSmall = when(windowSizeClass.widthSizeClass) {
Compact -> 10.dp
Medium -> 16.dp
Expanded -> 20.dp
else -> 10.dp
}
...
}
我喜欢第 3 个变体,因为它看起来更灵活,并且允许我们避免返回到 xmls。 但这需要努力来支持它。
但也许,我们可以以更方便的方式使用它吗?
我在撰写中使用这种方式;
val LocalDim = compositionLocalOf { Dimensions() }
data class Dimensions(
val default: Dp = 0.dp,
val spaceXXSmall: Dp = 2.dp,
val spaceExtraSmall: Dp = 4.dp,
val spaceSmall: Dp = 8.dp,
val spaceMedium: Dp = 16.dp,
val spaceLarge: Dp = 32.dp,
val spaceExtraLarge: Dp = 64.dp,
val spaceXXLarge: Dp = 128.dp,
val spaceXXXLarge: Dp = 256.dp
}
用来;
val dimensions = LocalDim.current
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.