Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法
发布时间 - 2026-01-10 22:16:35 点击率:次1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有SurfaceView。结果,每次打开程序第一次进入到该Activity时都会闪屏黑一下。原因就出在SurfaceView。

详解:
I think I found the reason for the black flash. In my case I'm using a SurfaceView inside a Fragment and dynamically adding this fragment to the activity after some action. The moment when I add the fragment to the activity, the screen flashes black. I checked out grepcode for the SurfaceView source and here's what I found: when the surface view appears in the window the very fist time, it requests the window's parameters changing by calling a private IWindowSession.relayout(..) method. This method “gives” you a new frame, window, and window surface. I think the screen blinks right at that moment.
The solution is pretty simple: if your window already has appropriate parameters it will not refresh all the window's stuff and the screen will not blink. The simplest solution is to add a 0px height plain SurfaceView to the first layout of your activity. This will recreate the window before the activity is shown on the screen, and when you set your second layout it will just continue using the window with the current parameters. I hope this helps.
原因:
SurfaceView因为不同于一般的view,它有自己良好的缓冲以及数据存取机制,系统对他有特殊处理。当surfaceview第一次在当前activity上添加的时候,系统会给WindowManager重新排布局,relayout,这样就会黑一下,这个只会出现在第一次,以后再添加surfaceview时就不会黑屏了。
解决:
可以在没有进入surfaceview的界面(比如很多程序一进去就有个Loading界面)的时候,在其它界面的layout.xml文件中添加一个SurfaceView,宽和高都弄成0dp,这样对布局没影响,而且这个东西使得surfaceview第一次出现了,那么也就是说,下一次我们真正用到SurfaceView的时候就不会闪屏了。
2.viewpager中有surfaceview播放视频,来回滑屏时,关于黑屏移动问题
解决:
surfaceview.setZorderTop(true);
surfaceview.getHolder().setFormat(SurfaceView.TRANSPARENT);
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# surfaceview闪屏
# surface闪屏
# Android跟随手指移动的控件demo实例
# Android自定义View实现跟随手指移动的小兔子
# Android绘制跟随手指移动的小球
# Android自定义圆形View实现小球跟随手指移动效果
# Android实现拖动小球跟随手指移动效果
# Android实现View拖拽跟随手指移动效果
# Android中View跟随手指移动效果
# Android View移动的六种方法小结
# Android View移动的3种方式总结
# Android自定义View实现跟随手指移动
# 黑屏
# 就会
# 有个
# 出现在
# 中有
# 只会
# 他有
# 时就
# 会给
# 其中一个
# 一进
# 出在
# 到该
# 再添
# 弄成
# 视频播放
# 有一个
# 出现了
# 也就是说
# 实现了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何在阿里云香港服务器快速搭建网站?
非常酷的网站设计制作软件,酷培ai教育官方网站?
装修招标网站设计制作流程,装修招标流程?
微信小程序 input输入框控件详解及实例(多种示例)
Python并发异常传播_错误处理解析【教程】
如何在Windows 2008云服务器安全搭建网站?
Laravel中的Facade(门面)到底是什么原理
如何在服务器上三步完成建站并提升流量?
如何快速查询网站的真实建站时间?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel如何自定义错误页面(404, 500)?(代码示例)
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何在腾讯云服务器快速搭建个人网站?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
三星网站视频制作教程下载,三星w23网页如何全屏?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何快速查询域名建站关键信息?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
javascript中的try catch异常捕获机制用法分析
Laravel如何记录自定义日志?(Log频道配置)
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何快速生成可下载的建站源码工具?
网站优化排名时,需要考虑哪些问题呢?
JS经典正则表达式笔试题汇总
JS去除重复并统计数量的实现方法
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
利用JavaScript实现拖拽改变元素大小
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
香港服务器部署网站为何提示未备案?
如何确保FTP站点访问权限与数据传输安全?
实例解析Array和String方法
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
linux写shell需要注意的问题(必看)
QQ浏览器网页版登录入口 个人中心在线进入
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
用yum安装MySQLdb模块的步骤方法

