管理系統UI之一:淡化System Bar(Dimming the System Bars)

KaraHughey 8年前發布 | 7K 次閱讀 Android開發 移動開發

這篇文章討論如何在4.0以及以上版本中淡化android的system bar(status bar和navigation bar)。在4.0之前的版本沒有這樣的功能。

用此文的方法并不會重新分配Ui的大小,只是status bar和navigation bar的相關圖標會被弱化,比如navigation bar的幾個虛擬鍵會弱化成很細微的小點。一旦你再次點擊 status bar和navigation bar 的所在區域,他們就會再次完全顯現。這種方式的好處是status bar和navigation bar并沒有消失,仍然在界面上,但是它們的細節變暗了、模糊了。

在4.0以上的版本,你可以使用SYSTEM_UI_FLAG_LOW_PROFILE 標志來使 status bar和navigation bar變暗。雖然下面是調用decorViewsetSystemUiVisibility方法,但是你完全可以調用任何一個可見view的setSystemUiVisibility方法,效果是一樣的。

// This example uses decor view, but you can use any visible view.
View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE;
decorView.setSystemUiVisibility(uiOptions);

 

一旦用戶這這個時候觸摸了status bar和navigation bar 的所在區域, 系統便清除掉了SYSTEM_UI_FLAG_LOW_PROFILE,status bar和navigation bar淡化效果將消失,如果你想再次淡化status bar和navigation bar,需要再次如上設置。

 

下面這張圖演示了gallery中的一張圖片在顯示時, navigation bar被淡化的情景(注意status bar沒有顯示并不是淡化了,而是gallery應用直接隱藏了它),你可以看到右側的 navigation bar 已經變成了三個透明度很低的灰白色的小圓點。

而這張圖則是system bars 完全顯示時候的樣子。

 

上面提到了如果你在system bar變暗的時候觸摸了相關區域,系統會自動清除setSystemUiVisibility()設置的flag,

其實你還可以自己手動清除:

View decorView = getActivity().getWindow().getDecorView();
// Calling setSystemUiVisibility() with a value of 0 clears
// all flags.
decorView.setSystemUiVisibility(0);

 

 

 本文由用戶 KaraHughey 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!