Cicero
04/30/2021, 7:01 PMCicero
04/30/2021, 7:01 PMval headerModifier = Modifier.fillMaxWidth()
Box(
headerModifier,
contentAlignment = Alignment.BottomCenter,
) {
Image(
painter = painter,
contentDescription = null,
contentScale = ContentScale.Crop,
modifier = headerModifier
)
Box(
headerModifier
) {
Canvas(headerModifier) {
println("size = $size")
val h = 120f
val w = size.width
val r = w * w / (6 * h) + h / 2
val x = w / 2 - r
println("r = $r, x = $x")
val topLeft = Offset(x, size.height - h)
val size = Size(2 * r, 2 * r)
drawArc(
background, startAngle = 0f, sweepAngle = -180f, useCenter = true,
topLeft = topLeft, size = size
)
}
}
}
Cicero
04/30/2021, 7:02 PMCicero
04/30/2021, 7:08 PMCicero
04/30/2021, 7:09 PMnitrog42
04/30/2021, 7:29 PMrobnik
04/30/2021, 7:30 PMCicero
04/30/2021, 7:34 PMCicero
04/30/2021, 7:34 PMrobnik
04/30/2021, 7:38 PMCicero
04/30/2021, 7:39 PMCicero
04/30/2021, 7:39 PMCicero
04/30/2021, 7:41 PMCicero
04/30/2021, 7:48 PMrobnik
04/30/2021, 7:51 PMCanvas(Modifier.fillMaxSize()) {
println("size = $size")
val h = 200f
val w = size.width
val r = w*w / (8*h) + h/2
val x = w/2 - r
println("r = $r, x = $x")
val topLeft = Offset(x, size.height - h)
val size = Size(2*r, 2*r)
drawArc(Color.White, startAngle=0f, sweepAngle=-180f, useCenter=true,
topLeft=topLeft, size=size)
}
robnik
04/30/2021, 7:51 PMCicero
04/30/2021, 7:52 PMCicero
04/30/2021, 7:53 PMCicero
04/30/2021, 7:53 PMrobnik
04/30/2021, 7:53 PMCicero
04/30/2021, 7:54 PMrobnik
04/30/2021, 7:54 PMh
and have it bounce. Can't do that with the SVG. 🙂robnik
04/30/2021, 7:54 PMCicero
04/30/2021, 7:54 PMCicero
04/30/2021, 7:54 PMCicero
04/30/2021, 7:57 PMCicero
04/30/2021, 8:01 PMrobnik
04/30/2021, 8:02 PMorangy
Cicero
04/30/2021, 8:40 PMrobnik
04/30/2021, 8:42 PMDrawScope
inside the Canvas
closure.orangy
Path
first (using Path.cubicTo
) and then draw it.