我正在创建12 dp圆角半径的虚线矩形。
我用画布来画,因为我们不能用dp或px来给予圆角半径。
Canvas(modifier = Modifier.fillMaxSize()) {
drawRoundRect(color = Color.Red, style = stroke, cornerRadius = CornerRadius(35f, 35f))
}
我用35 f是因为它类似于12 dp,有没有办法使用dp,或者有没有办法把dp/px转换成浮点xy值?
2条答案
按热度按时间0aydgbwb1#
Canvas
与提供Density
接口的DrawScope
配合使用。通过它,您可以使用**
Dp.toPx()
**函数:ljsrvy3e2#
密度因子可以从
Resources
得到:该值将给予 dp-to-px 缩放器。(您需要该值,因为
35f
在hdpi屏幕上与xxxhdpi屏幕上看起来非常不同)一旦你有了你的 px 值,你就可以直接使用它了,在你乘以
density
之后你会得到一个浮点数,但是如果你需要的话,你可以直接调用toInt
(或者toFloat
,如果你要反方向)。它们只是表达一个值的不同方式-重要的是值是正确的,它代表了正确的像素数等等,不管是100
还是100f