Android4.4的发布带来了新的特性-沉浸模式(Full-screen Immersive Mode),开启后应用占据全屏,虚拟按钮和系统栏隐藏,提高屏幕的利用率和冲击力。
那么怎样为我们的应用加入这个模式呢?先查看下Google的官方文档,里面有完整的示例代码。
1 // This snippet hides the system bars. 2 private void hideSystemUI() { 3 // Set the IMMERSIVE flag. 4 // Set the content to appear under the system bars so that the content 5 // doesn't resize when the system bars hide and show. 6 //开启全屏模式 7 mDecorView.setSystemUiVisibility( 8 View.SYSTEM_UI_FLAG_LAYOUT_STABLE 9 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 10 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 11 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 12 | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 13 | View.SYSTEM_UI_FLAG_IMMERSIVE); 14 } 15 16 // This snippet shows the system bars. It does this by removing all the flags 17 // except for the ones that make the content appear under the system bars. 18 //取消全屏模式 19 private void showSystemUI() { 20 mDecorView.setSystemUiVisibility( 21 View.SYSTEM_UI_FLAG_LAYOUT_STABLE 22 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 23 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 24 }
进入全屏后从屏幕上下放往里滑可重新唤出系统栏和虚拟按钮,但是唤出后系统栏会盖住一小部分内容,这个时候要给根layout设置一个高度为系统栏高度的Padding才能解决,后面会讲到。
而且要再进入全屏模式还要再点击一次按钮。所以我比较推荐下面的模式,唤出的是透明的系统栏和虚拟按钮,短暂的时间后系统栏和虚拟按钮会自动隐藏。
只需要把View.SYSTEM_UI_FLAG_IMMERSIVE改为View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY。
1 @Override 2 public void onWindowFocusChanged(boolean hasFocus) { 3 super.onWindowFocusChanged(hasFocus); 4 if (hasFocus) { 5 decorView.setSystemUiVisibility( 6 View.SYSTEM_UI_FLAG_LAYOUT_STABLE 7 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 8 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 9 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 10 | View.SYSTEM_UI_FLAG_FULLSCREEN 11 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);} 12 }