溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2020-08-20 22:11:13 來(lái)源:腳本之家 閱讀:1865 作者:譚東jay 欄目:移動(dòng)開(kāi)發(fā)

有的時(shí)候我們?cè)谧鋈溜@示或者視頻全屏播放時(shí)候,有些手機(jī)有底部的虛擬按鍵,如下圖所示:

Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法

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

Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法

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

Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法

上圖為隱藏虛擬按鍵效果。

那我們先說(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è)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI