Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法
有的時(shí)候我們在做全屏顯示或者視頻全屏播放時(shí)候,有些手機(jī)有底部的虛擬按鍵,如下圖所示:
在開發(fā)中我們會遇到需要隱藏虛擬按鍵或者沉浸式虛擬按鍵的需求。
上圖為沉浸式虛擬按鍵效果。
上圖為隱藏虛擬按鍵效果。
那我們先說如何隱藏虛擬按鍵:
public static void hideNavKey(Context context) { if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { View v = ((Activity) context).getWindow().getDecorView(); v.setSystemUiVisibility(View.GONE); } else if (Build.VERSION.SDK_INT >= 19) { //for new api versions. View decorView = ((Activity) context).getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; decorView.setSystemUiVisibility(uiOptions); } }
主要是幾個(gè)標(biāo)簽的使用。那先看下這些標(biāo)簽的作用和含義吧。
當(dāng)使用了SYSTEM_UI_FLAG_IMMERSIVE_STICKY標(biāo)簽的時(shí)候,向內(nèi)滑動的操作會讓系統(tǒng)欄臨時(shí)顯示,并處于半透明的狀態(tài)(沉浸式)。此時(shí)沒有標(biāo)簽會被清除,系統(tǒng)UI可見性監(jiān)聽器也不會被觸發(fā),布局的大小不會被影響。如果用戶沒有進(jìn)行操作,系統(tǒng)欄會在一段時(shí)間內(nèi)自動隱藏。
當(dāng)你使用SYSTEM_UI_FLAG_IMMERSIVE標(biāo)簽的時(shí)候,它是基于其他設(shè)置過的標(biāo)簽(SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN)來隱藏系統(tǒng)欄的。當(dāng)用戶向內(nèi)滑動,系統(tǒng)欄重新顯示并保持可見。但是布局大小會被虛擬按鍵的高度所影響。
如果你不想虛擬按鍵影響高度??梢杂萌缦拢?/strong>
用其他的UI標(biāo)簽(如SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION和SYSTEM_UI_FLAG_LAYOUT_STABLE)來防止系統(tǒng)欄隱藏時(shí)內(nèi)容區(qū)域大小發(fā)生變化是一種很不錯(cuò)的方法。你也需要確保Action Bar和其他系統(tǒng)UI控件同時(shí)進(jìn)行隱藏。下面這段代碼展示了如何在不改變內(nèi)容區(qū)域大小的情況下,隱藏與顯示狀態(tài)欄和導(dǎo)航欄。
那么如何顯示虛擬按鍵呢?往下看:
public static void showNavKey(Context context, int systemUiVisibility) {//getWindow().getDecorView().getSystemUiVisibility() 傳入0也可以 ((Activity) context).getWindow().getDecorView().setSystemUiVisibility(systemUiVisibility); }
以上這篇Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
android 線性布局LinearLayout實(shí)例代碼
android 線性布局LinearLayout實(shí)例代碼,需要的朋友可以參考一下2013-05-05Android?Framework如何實(shí)現(xiàn)Binder
這篇文章主要介紹了Android?Framework如何實(shí)現(xiàn)Binder,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09Android自定義手機(jī)界面狀態(tài)欄實(shí)例代碼
我們知道IOS上的應(yīng)用,狀態(tài)欄的顏色總能與應(yīng)用標(biāo)題欄顏色保持一致,用戶體驗(yàn)很不錯(cuò),那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允許開發(fā)者自定義狀態(tài)欄背景顏色啦,這是個(gè)不錯(cuò)的體驗(yàn)2017-03-03Flutter實(shí)現(xiàn)滑動塊驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)滑動塊驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03android實(shí)現(xiàn)查詢公交車還有幾站的功能
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)查詢公交車還有幾站的功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Kotlin實(shí)現(xiàn)圖片選擇器的關(guān)鍵技術(shù)點(diǎn)總結(jié)
這篇文章主要給大家介紹了關(guān)于Kotlin實(shí)現(xiàn)圖片選擇器的一些關(guān)鍵技術(shù)點(diǎn),這是一個(gè)我在學(xué)習(xí)Kotlin過程中的一個(gè)練手項(xiàng)目,非常適合學(xué)習(xí)Kotlin的時(shí)候參考,需要的朋友可以參考下2021-09-09Android DrawerLayout實(shí)現(xiàn)側(cè)拉菜單功能
這篇文章主要介紹了Android DrawerLayout實(shí)現(xiàn)側(cè)拉菜單功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06