In Code A, I get val width = this.size.width
when I use Canvas
of Compose.
Could you tell me what the unit of the width
? is it px
? or is it dp
?
Code A
Box(
modifier=Modifier.matchParentSize()
){
Canvas(
modifier = Modifier
) {
val width = this.size.width
}
}
CodePudding user response:
Canvas size comes from DrawScope interface which is Size
that contains Float
properties width
and height
which is in px
.
interface DrawScope : Density {
/**
* The current [DrawContext] that contains the dependencies
* needed to create the drawing environment
*/
val drawContext: DrawContext
/**
* Center of the current bounds of the drawing environment
*/
val center: Offset
get() = drawContext.size.center
/**
* Provides the dimensions of the current drawing environment
*/
val size: Size
get() = drawContext.size
/**
* The layout direction of the layout being drawn in.
*/
val layoutDirection: LayoutDirection
// draw functions
}
And Canvas
is a Spacer
with Modifier.drawBehind
@Composable
fun Canvas(modifier: Modifier, onDraw: DrawScope.() -> Unit) =
Spacer(modifier.drawBehind(onDraw))
because onDraw
being a lambda with DrawScope
receiver we access DrawScope
properties.