橫豎屏切換隱藏顯示虛擬導航欄

有視頻播放需求,切換橫豎屏,一般都是從默認豎屏切換橫屏。
除了設置全屏外

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

虛擬導航欄也需要隱藏,問題就出在隱藏后回到豎屏頁,恢復顯示虛擬導航欄,但是有輸入框時,一些機型上bug就找來了。根本原因就是顯示隱藏的代碼調存在漏洞。

比如隨便都能找到很多顯示隱藏的,但在實際做了需求之后,同時也在同事老哥的幫助下,才得以解決這個問題。
比如顯示隱藏方法

隱藏
 public static void hideNavigationBar(Window window, int defaultOptions) {
if(window != null) {
    View decorView = window.getDecorView();
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB
            && Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {

        decorView.setSystemUiVisibility(defaultOptions | View.GONE);

    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

        decorView.setSystemUiVisibility(defaultOptions
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
    }
}

}

顯示
public static void showNavigationBar(Window window, int defaultOptions) {
if(window != null) {
    View decorView = window.getDecorView();
    decorView.setSystemUiVisibility(defaultOptions | 0
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}

}

其中這個defaultOptions 可以直接獲取decorView.getSystemUiVisibility();

如果只是簡單這樣調用,那屏幕切換過程就很容易發(fā)現問題了。
核心就在于

橫屏全屏 切換回豎屏顯示虛擬導航欄時,show方法里的defaultOptions參數,就一定要使用剛才切換橫屏全屏時獲取的值,就是這兩個成對操作使用的同一個值

比如完整調用橫豎屏切換,橫屏時獲取decorView.getSystemUiVisibility(),豎屏時也使用這個值。

int systemUiVisibility;
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        //豎屏
       showNavigationBar(window,systemUiVisibility );
    }else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
        //橫屏
      systemUiVisibility = decorView.getSystemUiVisibility()
        hideNavigationBar(window,systemUiVisibility);
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容