1. 程式人生 > >視訊全屏非全屏切換,狀態列動態顯示隱藏相容性解決

視訊全屏非全屏切換,狀態列動態顯示隱藏相容性解決

    列表中視訊全屏/非全屏切換時,需要動態顯示/隱藏狀態列

    View類提供了setSystemUiVisibility和getSystemUiVisibility方法,這兩個方法實現對狀態列的動態顯示或隱藏的操作,以及獲取狀態列當前可見性(參考blog:https://blog.csdn.net/stevenhu_223/article/details/12428591)懶得多謝,直接引用了,大家有興趣可以瞭解一下

    我一開始全屏使用的是以下兩種切換方式:

        1、切換到全屏時:setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);//全屏隱藏狀態列

        2、切換到非全屏:setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);//非全屏,切換到普通狀態

    這兩段程式碼,如果是沉浸式狀態列,是沒有任何問題的,但是我的首頁不能使用沉浸式,而且狀態列設定了白底黑字樣式(主要原因應該是這個)所以在使用這種方式的時候,居然出現了問題!!!!相容性,真的非常腦袋疼,其它手機都沒問題,魅族Flyme系統和華為榮耀手機全屏後狀態列依然顯示,所以不得不在首頁換種方式解決

    後來想到,setSystemUiVisibility其實都是View級別的,但是android中關於介面最底層其實是Window,所以想到用Window的setFlags方式,最終問題解決,解決程式碼如下:

        1、切換到全屏時:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        2、切換到非全屏:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    最終問題相容性迎刃而解,在處理UI,尤其是系統狀態列、Theme等,相容性是最大的問題,希望與小夥伴們共勉