管理系統UI之一:淡化System Bar(Dimming the System Bars)
這篇文章討論如何在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變暗。雖然下面是調用decorView
的setSystemUiVisibility
方法,但是你完全可以調用任何一個可見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);