本文主要是介绍管理系统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
方法,效果是一样的。
1 2 3 4 | // 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,
其实你还可以自己手动清除:
1 2 3 4 | View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0); |
这篇关于管理系统UI之一:淡化System Bar(Dimming the System Bars)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!