Android全屏幕隐藏NavigationBar

有时候针对一个视频播放页面,需要将NavigationBar隐藏掉,这样有更加好的用户体验。我最近在做ExoPlayer相关的一个视频播放的需求,发现默认情况下,这个Player是没有隐藏掉NavigationBar的,这就导致了在点击屏幕暂停播放的时候,会拉伸缩放视频比例,上下留有黑边。等到NavigationBar被隐藏的时候,视频又会重新填充进整个屏幕。体验不是很好,所以需要改造一下NavigationBar。

原理很简单,就是通过获取getWindow().getDecorView(),然后设置setSystemUiVisibility就可以实现。但是要注意API版本,直接看代码片段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
protected void hideBottomUIMenu(){
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
} else if (Build.VERSION.SDK_INT >= 19) {
//for new api versions.
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_IMMERSIVE;
decorView.setSystemUiVisibility(uiOptions);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
-------------The End-------------
请我喝一杯啤酒~