jetpack compose 组件截图 出现Software rendering doesn‘t support hardware bitmaps
import android.graphics.Bitmap
import android.graphics.Canvas
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.text.BasicText
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.asAndroidBitmap
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.core.view.drawToBitmap
@Composable
fun CaptureComposableScreenshot() {
var screenshotBitmap by remember { mutableStateOf<Bitmap?>(null) }
val context = LocalContext.current
val view = LocalView.current
Box(modifier = Modifier.fillMaxSize()) {
// 显示被截图的内容
Box(
modifier = Modifier
.size(200.dp)
.background(Color.Blue)
) {
Text(text = "Jetpack Compose Screenshot", color = Color.White)
}
// 按钮:截图
Button(
onClick = {
// 获取当前的视图并捕获截图
screenshotBitmap = view.drawToBitmap()
},
modifier = Modifier
.size(100.dp)
.background(Color.Gray)
) {
Text("Capture")
}
}
// 显示截图
screenshotBitmap?.let {
// 使用图片展示或保存截图
// 例如:Image(bitmap = it.asImageBitmap(), contentDescription = "Screenshot")
}
}
重要问题 view.drawToBitmap() 时可能会出现
Software rendering doesn't support hardware bitmaps 崩溃问题
原因是 显示图片时 应该设置
allowHardware(false)
更多推荐



所有评论(0)