Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法
有的時(shí)候我們?cè)谧鋈溜@示或者視頻全屏播放時(shí)候,有些手機(jī)有底部的虛擬按鍵,如下圖所示:

在開(kāi)發(fā)中我們會(huì)遇到需要隱藏虛擬按鍵或者沉浸式虛擬按鍵的需求。

上圖為沉浸式虛擬按鍵效果。

上圖為隱藏虛擬按鍵效果。
那我們先說(shuō)如何隱藏虛擬按鍵:
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)滑動(dòng)的操作會(huì)讓系統(tǒng)欄臨時(shí)顯示,并處于半透明的狀態(tài)(沉浸式)。此時(shí)沒(méi)有標(biāo)簽會(huì)被清除,系統(tǒng)UI可見(jiàn)性監(jiān)聽(tīng)器也不會(huì)被觸發(fā),布局的大小不會(huì)被影響。如果用戶沒(méi)有進(jìn)行操作,系統(tǒng)欄會(huì)在一段時(shí)間內(nèi)自動(dòng)隱藏。
當(dāng)你使用SYSTEM_UI_FLAG_IMMERSIVE標(biāo)簽的時(shí)候,它是基于其他設(shè)置過(guò)的標(biāo)簽(SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN)來(lái)隱藏系統(tǒng)欄的。當(dāng)用戶向內(nèi)滑動(dòng),系統(tǒng)欄重新顯示并保持可見(jiàn)。但是布局大小會(huì)被虛擬按鍵的高度所影響。
如果你不想虛擬按鍵影響高度??梢杂萌缦拢?/strong>
用其他的UI標(biāo)簽(如SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION和SYSTEM_UI_FLAG_LAYOUT_STABLE)來(lái)防止系統(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)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
android 線性布局LinearLayout實(shí)例代碼
android 線性布局LinearLayout實(shí)例代碼,需要的朋友可以參考一下2013-05-05
Android?Framework如何實(shí)現(xiàn)Binder
這篇文章主要介紹了Android?Framework如何實(shí)現(xiàn)Binder,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
Android自定義手機(jī)界面狀態(tài)欄實(shí)例代碼
我們知道IOS上的應(yīng)用,狀態(tài)欄的顏色總能與應(yīng)用標(biāo)題欄顏色保持一致,用戶體驗(yàn)很不錯(cuò),那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允許開(kāi)發(fā)者自定義狀態(tài)欄背景顏色啦,這是個(gè)不錯(cuò)的體驗(yàn)2017-03-03
Flutter實(shí)現(xiàn)滑動(dòng)塊驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)滑動(dòng)塊驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
android實(shí)現(xiàn)查詢公交車還有幾站的功能
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)查詢公交車還有幾站的功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Kotlin實(shí)現(xiàn)圖片選擇器的關(guān)鍵技術(shù)點(diǎn)總結(jié)
這篇文章主要給大家介紹了關(guān)于Kotlin實(shí)現(xiàn)圖片選擇器的一些關(guān)鍵技術(shù)點(diǎn),這是一個(gè)我在學(xué)習(xí)Kotlin過(guò)程中的一個(gè)練手項(xiàng)目,非常適合學(xué)習(xí)Kotlin的時(shí)候參考,需要的朋友可以參考下2021-09-09
Android DrawerLayout實(shí)現(xiàn)側(cè)拉菜單功能
這篇文章主要介紹了Android DrawerLayout實(shí)現(xiàn)側(cè)拉菜單功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06

