当前位置: 首页 > news >正文

在使用 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() }
http://www.jsqmd.com/news/150907/

相关文章:

  • 人像摄影(雪景 · 现代装篇 · 2) 提示词
  • 企业文化传播助手:内部通讯内容由TensorRT支持生成
  • 多代理系统安全防护:对抗恶意AI代理的策略
  • 2025年钢梁厂家实力盘点:东莞市泉源钢铁贸易有限公司等六家技术领先企业的核心优势与行业竞争力深度解析 - 品牌企业推荐师(官方)
  • 实时操作系统中USB2.0主机集成方案
  • 核心要点:提升USB识别成功率的关键设置
  • Cesium快速入门34:3dTile高级样式设置
  • 【人工智能学习-AI-MIT公开课-第5. 搜索:最优、分支限界、A**】
  • 企业社会责任报告:ESG数据整理通过TensorRT自动汇总
  • jflash下载入门必看:新手快速上手配置指南
  • 并购尽职调查助手:风险点排查借助TensorRT全面覆盖
  • 市场营销策划AI:创意方案生成依托TensorRT快速迭代
  • RK3568 Android14 调试 RTL8211F 千兆以太网 (RGMII)
  • 促销活动效果预测:转化率模型通过TensorRT提前评估
  • 当你跌入深渊退无可退的时候,眼前就只剩下向上这一条路了
  • 三句话,复盘我的2025年网安学习之路
  • STM32CubeMX启动无反应?通俗解释新手应对方法
  • 跨平台CubeMX安装对比:Windows/Linux/IDE配置差异解析
  • 银行智能投顾服务:投资建议生成模型通过TensorRT快速响应
  • 【钓鱼攻防】浅谈制作免杀word文档钓鱼
  • 专利侵权比对工具:文本相似度分析在TensorRT上高效执行
  • 物流路线智能规划:多目标优化算法在TensorRT上求解
  • 工业控制场景下Keil MDK下载及权限设置说明
  • 工控场景下STLink驱动安装失败原因全面讲解
  • 包装设计推荐:视觉元素搭配AI通过TensorRT提供建议
  • MOSFET驱动电路设计实战入门:简单项目应用示例
  • 「智效跃迁,架构无界」2025 腾讯云架构师峰会金句大全
  • 多用户工控终端下STM32CubeMX打不开:账户权限问题深度剖析
  • 基于python宠物医院药品管理系统的设计与实现_5xeq5a9b
  • STM32CubeMX配置ST7735:实战案例详解