news 2026/3/11 17:08:08

在使用 Android Jetpack Compose的 App里创建 SurfaceView和Surface

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在使用 Android Jetpack Compose的 App里创建 SurfaceView和Surface

基本方法是使用AndroidView创建surfaceview,在surfaceHolder的callback里取得surface

@Composable fun SurfaceViewScreen() { val context = LocalContext.current // 用于保存 Surface 引用 var surfaceHolder: SurfaceHolder? by remember { mutableStateOf(null) } AndroidView( factory = { ctx -> SurfaceView(ctx).apply { // 设置全屏布局参数 layoutParams = ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT ) // 添加 SurfaceHolder 回调 holder.addCallback(object : SurfaceHolder.Callback { override fun surfaceCreated(holder: SurfaceHolder) { // Surface 创建时获取 Surface surfaceHolder = holder val surface = holder.surface if(surface?.isValid == true){ println("surface is valid") } // 在这里可以开始使用 Surface startDrawingOnSurface(surface) println("Surface created: $surface") } override fun surfaceChanged( holder: SurfaceHolder, format: Int, width: Int, height: Int ) { println("Surface changed: $width x $height") } override fun surfaceDestroyed(holder: SurfaceHolder) { // 清理资源 surfaceHolder = null println("Surface destroyed") } }) } }, modifier = Modifier.fillMaxSize() ) } // 在 Surface 上绘制的示例函数 private fun startDrawingOnSurface(surface: android.view.Surface) { // 在后台线程进行绘制 Thread { try { val canvas = surface.lockCanvas(null) try { // 绘制红色背景 canvas.drawColor(Color.RED) // 可以在这里进行更多绘制操作 // ... } finally { surface.unlockCanvasAndPost(canvas) } } catch (e: Exception) { e.printStackTrace() } }.start() }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 6:57:13

物流路线智能规划:多目标优化算法在TensorRT上求解

物流路线智能规划:多目标优化算法在TensorRT上求解 在大型物流中心的调度大厅里,每秒都有成百上千个订单涌入系统。一辆配送车刚出发,客户又临时追加了三个新地址;城市主干道突发拥堵,原定路线瞬间失效——面对这种高频…

作者头像 李华
网站建设 2026/3/11 15:40:00

STM32下I2C中断方式通信实现深度剖析

深入STM32的I2C中断通信:从原理到实战的完整工程实践在嵌入式系统开发中,我们常常面临这样的窘境:主控芯片已经跑得飞快,但只要一接上几个传感器,整个系统就像被“卡住”了一样——按键不灵、界面卡顿、数据延迟。问题…

作者头像 李华
网站建设 2026/3/7 7:50:02

组织架构优化建议:协同效率评估由TensorRT数据驱动

组织架构优化建议:协同效率评估由TensorRT数据驱动 在AI系统日益复杂的今天,一个看似无关组织管理的技术工具——NVIDIA TensorRT,正悄然成为企业提升研发协同效率的“隐形标尺”。我们常认为组织架构优化依赖于流程再造或绩效考核&#xff…

作者头像 李华
网站建设 2026/3/11 7:00:05

培训课程内容生成:专业知识拆解通过TensorRT智能组织

培训课程内容生成:专业知识拆解通过TensorRT智能组织 在AI模型越来越复杂、部署场景越来越多元的今天,一个训练好的深度学习模型从实验室走向生产线,往往要经历一场“性能炼狱”——推理延迟高、吞吐量低、显存占用大。特别是在边缘设备上跑大…

作者头像 李华
网站建设 2026/3/10 20:18:11

并购尽职调查助手:风险点排查借助TensorRT全面覆盖

并购尽职调查助手:风险点排查借助TensorRT全面覆盖 在一场百亿级企业并购案中,法务团队需要在72小时内审阅超过两万页的合同、协议与合规文件。传统方式下,这几乎是一项不可能完成的任务——人工阅读不仅效率低下,还极易因疲劳导致…

作者头像 李华
网站建设 2026/3/4 8:54:48

跨平台CubeMX安装对比:Windows/Linux/IDE配置差异解析

深入解析 STM32CubeMX 跨平台安装:从 Windows 到 Linux,再到多 IDE 协同实战你有没有遇到过这样的情况?在公司用 Windows Keil 开发得好好的项目,回家想在自己的 Linux 笔记本上继续调试,结果 CubeMX 启动失败、生成代…

作者头像 李华