欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2015年09月25日 09:57:55   投稿:mrr  
本篇文章主要給大家分享Android Fragment中使用SurfaceView切換時閃一下黑屏的解決辦法,需要的朋友可以參考下

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

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

復制代碼 代碼如下:

getWindow().setFormat(PixelFormat.TRANSLUCENT); 

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

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

原因:

SurfaceView因為不同于一般的view,它有自己良好的緩沖以及數(shù)據(jù)存取機制,系統(tǒng)對他有特殊處理。當surfaceview第一次在當前activity上添加的時候,系統(tǒng)會給WindowManager重新排布局,relayout,這樣就會黑一下,這個只會出現(xiàn)在第一次,以后再添加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);

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

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

函數(shù)原型

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

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

相關文章

  • Flutter實現(xiàn)頁面路由及404路由攔截

    Flutter實現(xiàn)頁面路由及404路由攔截

    這篇文章介紹了Flutter實現(xiàn)頁面路由及404路由攔截的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • android webView截圖的4種方法

    android webView截圖的4種方法

    這篇文章主要為大家詳細介紹了android webView截圖的4種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 詳解okhttp3 請求頭不能為中文的坑

    詳解okhttp3 請求頭不能為中文的坑

    這篇文章主要介紹了詳解okhttp3 請求頭不能為中文的坑,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • Android 4.4以上

    Android 4.4以上"沉浸式"狀態(tài)欄效果的實現(xiàn)方法

    Android與ios效果互仿早已不是什么稀奇的事,我猜大概這個效果來自ios吧,有爭議說這種效果不能叫做沉浸式,叫透明狀態(tài)欄更合適,我也感覺這和沉浸式的含義不太一致。但是大家都這么叫了,那就這樣唄。下面來一起看看關于Android 4.4以上"沉浸式"效果的實現(xiàn)方法。
    2016-09-09
  • Kotlin協(xié)程操作之創(chuàng)建啟動掛起恢復詳解

    Kotlin協(xié)程操作之創(chuàng)建啟動掛起恢復詳解

    本文的定位是協(xié)程的創(chuàng)建、啟動、掛起、恢復,也會示例一些簡單的使用,這里不對suspend講解,,也不對協(xié)程的高級用法做闡述(熱數(shù)據(jù)通道Channel、冷數(shù)據(jù)流Flow...),本文主要講協(xié)程稍微深入的全面知識
    2022-08-08
  • Android返回鍵功能的實現(xiàn)方法

    Android返回鍵功能的實現(xiàn)方法

    這篇文章主要介紹了Android返回鍵功能的實現(xiàn)方法,實例分析了Android返回鍵的原理與具體的功能實現(xiàn)代碼,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • Android中AsyncTask的用法實例分享

    Android中AsyncTask的用法實例分享

    AsyncTask的特點是任務在主線程之外運行,而回調方法是在主線程中執(zhí)行, 這就有效地避免了使用Handler帶來的麻煩
    2014-02-02
  • Android更多條目收縮展開控件ExpandView的示例代碼

    Android更多條目收縮展開控件ExpandView的示例代碼

    本篇文章主要介紹了Android更多條目收縮展開控件ExpandView的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Flutter實現(xiàn)固定header底部滑動頁效果示例

    Flutter實現(xiàn)固定header底部滑動頁效果示例

    這篇文章主要為大家介紹了Flutter實現(xiàn)固定header底部滑動頁效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • android計算器代碼示例分享

    android計算器代碼示例分享

    這篇文章主要介紹了android實現(xiàn)的簡單計算器代碼示例,大家參考使用吧
    2014-01-01

最新評論