Nick
06/30/2021, 1:13 PMAppWidget
on Android. Compose doesn’t work in AppWidgets
. I believe I saw someone on here mention being able to convert a Composable
to an ImageView
? Is that possible?Mark Murphy
06/30/2021, 8:07 PMCanvas
. I had a proof-of-concept of that working last year(?), but I have not experimented with it since.Nick
06/30/2021, 8:41 PMMark Murphy
06/30/2021, 9:09 PMNick
06/30/2021, 9:52 PMclass MainActivity : ComponentActivity() {
@InternalComposeUiApi
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.widget)
val imageView = findViewById<ImageView>(R.id.crypto_icon)
val composeView = ComposeView(this).apply {
setContent {
Column(modifier = Modifier
.fillMaxSize()
.background(Color.Green)
) {
Text(
text = "lipsum",
modifier = Modifier
.fillMaxSize()
.background(Color.Black),
fontSize = 12.sp
)
}
}
layoutParams = ViewGroup.LayoutParams(
300,
300
)
setParentCompositionContext(imageView.compositionContext)
}
val image1 = generateBitmapFromView(composeView)
findViewById<ImageView>(R.id.crypto_icon).setImageBitmap(image1)
}
}
fun generateBitmapFromView(view: View): Bitmap {
val width = 300
val height =300
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
canvas.drawColor(android.graphics.Color.CYAN)
view.layout(view.left, <http://view.top|view.top>, 300, 300)
view.draw(canvas)
return bitmap
}
Mark Murphy
06/30/2021, 11:11 PM