視訊全屏非全屏切換,狀態列動態顯示隱藏相容性解決
阿新 • • 發佈:2018-12-31
列表中視訊全屏/非全屏切換時,需要動態顯示/隱藏狀態列
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等,相容性是最大的問題,希望與小夥伴們共勉