国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android Fragment中使用SurfaceView切換時(shí)閃一下黑屏的解決辦法

2020-04-11 11:25:19
字體:
供稿:網(wǎng)友

重構(gòu)了下之前自己的一個(gè)新聞客戶端,全部使用了Fragment來進(jìn)行頁(yè)面切換,只有一個(gè)入口Activity作為程序的啟動(dòng)Activity,其中有一個(gè)界面需要調(diào)用攝像頭識(shí)別二維碼,于是就會(huì)用到SurfaceView進(jìn)行預(yù)覽,那么問題來了,當(dāng)切換到對(duì)應(yīng)的Fragment時(shí),屏幕會(huì)黑一下,黑了1秒左右就顯示出正常的界面,而且這種現(xiàn)象只有第一次進(jìn)入該Fragment才會(huì)出現(xiàn),之后進(jìn)入都不會(huì)出現(xiàn),解決方法是無意在github上看到了,試了一下,可以行的通,下面貼出解決方法。

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

復(fù)制代碼 代碼如下:

getWindow().setFormat(PixelFormat.TRANSLUCENT); 

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

方法二、在activity 的 root view 里面 加入一個(gè) 長(zhǎng)寬都是0px的并且不可見SurfaceView元素 。

原因:

SurfaceView因?yàn)椴煌谝话愕膙iew,它有自己良好的緩沖以及數(shù)據(jù)存取機(jī)制,系統(tǒng)對(duì)他有特殊處理。當(dāng)surfaceview第一次在當(dāng)前activity上添加的時(shí)候,系統(tǒng)會(huì)給WindowManager重新排布局,relayout,這樣就會(huì)黑一下,這個(gè)只會(huì)出現(xiàn)在第一次,以后再添加surfaceview時(shí)就不會(huì)黑屏了。

而自己項(xiàng)目中,由于全部使用fragment進(jìn)行切換頁(yè)面,只有一個(gè)activity聲明在清單文件中,但是代碼中是可以配置是否新開activity作為fragment容器的,由于我不想再這個(gè)activity中增加代碼getWindow().setFormat(PixelFormat.TRANSLUCENT);,于是我使用了新開activity作為這個(gè)fragment的容器,于是問題也得以解決。

有閃屏的代碼是這樣的

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

但是這個(gè)函數(shù)有一個(gè)重載函數(shù)就是是否新開activity,這里使用重載函數(shù)進(jìn)行解決

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

函數(shù)原型

 /**   * 打開fragment并請(qǐng)求獲得返回值,并設(shè)置是否在新activity中打開   * @param newActivity 是否新開activity   * @param pageName 頁(yè)面名   * @param bundle 參數(shù)   * @param coreAnim 動(dòng)畫   * @param requestCode 請(qǐng)求碼   * @return 打開的fragment對(duì)象   */  public final Fragment openPageForResult(boolean newActivity, String pageName, Bundle bundle, CoreAnim coreAnim, int requestCode);

以上內(nèi)容就是本文給大家分享的Android Fragment中使用SurfaceView切換時(shí)閃一下黑屏的解決辦法,希望對(duì)大家有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 旬邑县| 革吉县| 固安县| 扎兰屯市| 黄浦区| 徐水县| 东辽县| 建平县| 柯坪县| 舞阳县| 拜泉县| 大丰市| 灌阳县| 嘉黎县| 上杭县| 陆川县| 安远县| 苏尼特左旗| 广平县| 喀什市| 祁阳县| 三明市| 青河县| 托克托县| 西和县| 云霄县| 阳朔县| 普安县| 承德县| 景德镇市| 日土县| 科技| 宝兴县| 清涧县| 毕节市| 瑞丽市| 望江县| 崇信县| 抚远县| 上林县| 清新县|