Colton Idle
06/10/2023, 4:56 PMAndroidView(
factory = { ctx ->
SurfaceView(ctx).apply {
val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.compose_ui_logo)
val canvas = Canvas()
canvas.drawBitmap(bitmap, 0F, 0F, Paint())
draw(canvas)
}
})
If it helps... my end goal is to show a bitmap, and animate it across the screen, or make it bounce or something. So far, I'm stuck here though. 😂Francesc
06/10/2023, 5:04 PMIan Lake
06/10/2023, 5:13 PMColton Idle
06/10/2023, 6:36 PMColton Idle
06/10/2023, 6:38 PMColton Idle
06/10/2023, 6:42 PMSurfaceView is not going to animate well at all, due to how it worksnice to know. in my case, i think it'll be fine. just want something to be able to tell if theres movement.
romainguy
06/10/2023, 11:50 PMromainguy
06/10/2023, 11:50 PMromainguy
06/10/2023, 11:50 PMromainguy
06/10/2023, 11:51 PMColton Idle
06/11/2023, 2:11 PMColton Idle
06/11/2023, 2:18 PMromainguy
06/11/2023, 10:07 PMColton Idle
06/12/2023, 10:59 AMColton Idle
06/12/2023, 12:17 PMAndroidView(
factory = { ctx ->
SurfaceView(ctx).apply {
holder.addCallback(object : SurfaceHolder.Callback {
override fun surfaceCreated(p0: SurfaceHolder) {
val canvas = Canvas()
draw(canvas)
p0.lockCanvas()
val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.logo)
canvas.drawBitmap(bitmap, 0F, 0F, Paint())
}
override fun surfaceChanged(p0: SurfaceHolder, p1: Int, p2: Int, p3: Int) {
}
override fun surfaceDestroyed(p0: SurfaceHolder) {
}
})
}
})
Colton Idle
06/12/2023, 5:57 PM@Composable
fun FakeCam() {
var enabled by remember { mutableStateOf(true) }
val anim = animateFloatAsState(targetValue = if (enabled) 100f else 0f, label = "")
LaunchedEffect(key1 = Unit, block = {
while (true) {
delay(1000)
enabled = !enabled
}
})
val context = LocalContext.current
val callback = remember {
object : SurfaceHolder.Callback {
override fun surfaceCreated(holder: SurfaceHolder) {}
override fun surfaceChanged(holder: SurfaceHolder, p1: Int, p2: Int, p3: Int) {
drawBitmapToCanvas(anim.value, anim.value, context, holder)
}
override fun surfaceDestroyed(p0: SurfaceHolder) {}
}
}
AndroidView(
factory = { ctx ->
SurfaceView(ctx).apply {
holder.addCallback(callback)
}
}, update = { view ->
drawBitmapToCanvas(anim.value, anim.value, context, view.holder)
}
)
}
fun drawBitmapToCanvas(x: Float, y: Float, context: Context, holder: SurfaceHolder) {
val canvas = holder.lockCanvas()
if (canvas != null) {
canvas.drawColor(Color.BLACK)
val bitmap: Bitmap =
BitmapFactory.decodeResource(context.resources, R.drawable.logo)
canvas.drawBitmap(bitmap, x, y, Paint())
holder.unlockCanvasAndPost(canvas)
}
}