重构了下之前自己的一个新闻客户端,全部使用了Fragment来进行页面切换,只有一个入口Activity作为程序的启动Activity,其中有一个界面需要调用摄像头识别二维码,

于是就会用到SurfaceView进行预览,那么问题来了,当切换到对应的Fragment时,屏幕会黑一下,黑了1秒左右就显示出正常的界面,而且这种现象只有第一次进入该

Fragment才会出现,之后进入都不会出现,解决方法是无意在github上看到了,试了一下,可以行的通,下面贴出解决方法。

方法一、在Activity的onCreate中添加如下代码:

getWindow().setFormat(PixelFormat.TRANSLUCENT);  

但是如果你在fragment里这么做貌似是行不通的。

方法二、在activity 的 root view 里面 加入一个 长宽都是0px的并且不可见SurfaceView元素 。

原因:

SurfaceView因为不同于一般的view,它有自己良好的缓冲以及数据存取机制,系统对他有特殊处理。当surfaceview第一次在当前activity上添加的时候,系统会给WindowManager重新排布局,relayout,这样就会黑一下,这个只会出现在第一次,以后再添加surfaceview时就不会黑屏了。

而自己项目中,由于全部使用fragment进行切换页面,只有一个activity声明在清单文件中,但是代码中是可以配置是否新开activity作为fragment容器的,由于我不想再这个activity中增加代码getWindow().setFormat(PixelFormat.TRANSLUCENT);,于是我使用了新开activity作为这个fragment的容器,于是问题也得以解决。

有闪屏的代码是这样的:

private static final int REQUEST_CODE_SCAN = 1;
openPageForResult("scan",null,CoreAnim.slide,REQUEST_CODE_SCAN);

但是这个函数有一个重载函数就是是否新开activity,这里使用重载函数进行解决

private static final int REQUEST_CODE_SCAN = 1;
openPageForResult(true,"scan",null,CoreAnim.slide,REQUEST_CODE_SCAN);

函数原型

/*** 打开fragment并请求获得返回值,并设置是否在新activity中打开* @param newActivity 是否新开activity* @param pageName 页面名* @param bundle 参数* @param coreAnim 动画* @param requestCode 请求码* @return 打开的fragment对象*/public final Fragment openPageForResult(boolean newActivity,String pageName, Bundle bundle, CoreAnim coreAnim, int requestCode);

以上内容就是本文给大家分享的Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法,希望对大家有所帮助。

备注:目前使用的方法一,解决了问题

其他可参考链接:http://blog.csdn.net/aikongmeng/article/details/49125437

转载于:https://www.cnblogs.com/butterfly-clover/p/5481556.html

【转】Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法相关推荐

  1. Android启动应用时闪一下黑屏

    Android手机在启动应用时,闪一下黑屏,有的手机1秒不到,有的2秒或以上?一直没注意其他应用,听同事说微信桌面点击启动时会延迟一会启动,没有黑屏..试了一下,像QQ.微信.360云盘.酷我音乐等A ...

  2. android线程改变布局,Android线程中设置控件的值提示报错的解决方法

    本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.y ...

  3. 在word中利用Endnote导入文献时提示“无法编辑range”的解决办法-基本上通过以下方法都可以解决

    在word中利用Endnote导入文献时提示"无法编辑range"的解决办法 注意:在处理这个问题之前,请复制word以备份我们要处理的word文件,否则后期如果我们调整了word ...

  4. Mac如何删除在磁盘空间中的可清除空间以及Mac开机时进度条卡100%的解决办法

    Mac如何删除在磁盘空间中的可清除空间以及Mac开机时进度条卡100%的解决办法 1.Mac如何删除在磁盘空间中的可清除空间 对于mac来说磁盘的空间是十分宝贵的,小编会定期的查看一下自己电脑的磁盘使 ...

  5. Android 避免APP启动闪黑屏的解决办法

    闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面 前几天Boss就反应说,机器每次启动程序都会闪一下黑屏,这个客户不接受.没办法,只能想想怎么解 ...

  6. mysql出现1499错误_连接MySQL时出现1449与1045异常解决办法

    连接MySQL时出现1449与1045异常解决办法 mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解 ...

  7. android+点击屏幕隐藏键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...

    1,实现方法一: 通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 android:id="@+id/traceroute ...

  8. Ubuntu连接以太网时显示“设备未托管”的解决办法

    Ubuntu连接以太网时显示"设备未托管"的解决办法 故障分析: 电脑之前可能设置过PPOE(有线宽带虚拟拨号),常见为连接校园拨号宽带. 解决办法: 第一步:打开终端 第二步:切 ...

  9. 12 c for. oracle rac,【案例】Oracle RAC FOR AIX搭建执行root.sh时两次报错的解决办法

    天萃荷净 运维DBA反映在aix 5.3 ml6安装10.2.0.1 rac报错0509-036 Cannot load program crsctl.bin because of the follo ...

  10. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误. 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法. 看 ...

最新文章

  1. windows update更新时出现错误代码 8024200D解决方法(转)
  2. php 统计一周数据,如何获取本周、上周、本月、上个月数据的起止时间 PHP
  3. leetcode--983.最低票价
  4. 2022年青年科学基金项目预算经费下降!
  5. 一张图看懂阿里云网络产品[二] 专有网络VPC
  6. zookeeper 日志查看_Linux环境下安装部署单机Zookeeper
  7. mongodb for java_【MongoDB for Java】Java操作MongoDB
  8. [转]各种互斥量的总结
  9. Silverlight 解谜游戏 之十七 胜利界面优化
  10. Linux查找树莓派ip地址,让树莓派“说”出自己的IP地址
  11. devc 能优化吗_为啥觉得Dev c++越来越难用?
  12. python阈值分割_Python实现otsu阈值分割算法
  13. 软件工程毕业设计题目推荐50例
  14. 使用apipost工具快速生成在线接口文档
  15. Everything下载及使用教程【非常详细】(磁盘文件搜索神器)
  16. 锂电池容量下降怎么办?锂电池容量下降修复方法
  17. JavaSE_day01【Java概述、环境搭建、标识符、变量、基本数据类型】
  18. uniapp开发微信小程序教程(一)
  19. 【嵌入式蓝桥杯】程序执行完中断将不再触发 /* Go to infinite loop when Hard Fault exception occurs */
  20. elasticsearch的父子_ElasticSearch 学习记录之父子结构的查询

热门文章

  1. Golang 返回errorString,而不是errorString的原因
  2. Nginx Unit 与 LEMUR 新架构
  3. Session Cookie 之我见
  4. Java入门 第一季第六章 数组
  5. Dalvik和Java运行环境的区别
  6. 客户端验证的极品--jQuery.validator
  7. sync in demos
  8. gcc/g++ 编译与链接(2)
  9. 关于map的几种非常规排序
  10. HQL (迫切)左外连接