Android开发过程当中,有很多时候,需要沉浸式的页面效果,我将其整理了一下并记录下来,希望对有类似需求的朋友有帮助。
@Override
protected voidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_immersive_mode);
//情况1:全屏模式,不显示状态栏,没有actionbar
// View decorView = getWindow().getDecorView();
// int options= View.SYSTEM_UI_FLAG_FULLSCREEN;
// decorView.setSystemUiVisibility(options);
// //默认情况下,actionbar不会独立于状态栏存在
// ActionBar actionBar = getSupportActionBar();
// actionBar.hide();
//情况2:全屏,将状态栏透明,actionbar隐藏
// if (Build.VERSION.SDK_INT>=21){
// View decorView = getWindow().getDecorView();
// int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
// decorView.setSystemUiVisibility(option);
// getWindow().setStatusBarColor(Color.TRANSPARENT);
// }
// ActionBar actionBar = getSupportActionBar();
// actionBar.hide();
//情况3:隐藏状态栏,隐藏导航栏
ViewdecorView=getWindow().getDecorView();
intoption=View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBaractionBar=getSupportActionBar();
actionBar.hide();
//情况4:透明状态栏,导航栏
// if (Build.VERSION.SDK_INT >= 21) {
// View decorView = getWindow().getDecorView();
// int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
// decorView.setSystemUiVisibility(option);
// getWindow().setNavigationBarColor(Color.TRANSPARENT);
// getWindow().setStatusBarColor(Color.TRANSPARENT);
// }
// ActionBar actionBar = getSupportActionBar();
// actionBar.hide();
}
//沉浸模式,想要设计完全沉浸模式,需要去哦这么设计
@Override
public voidonWindowFocusChanged(booleanhasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus&&Build.VERSION.SDK_INT>=19) {
ViewdecorView=getWindow().getDecorView();
decorView.setSystemUiVisibility(
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
|View.SYSTEM_UI_FLAG_FULLSCREEN
|View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}