转自:http://blog.csdn.net/guolin_blog/article/details/51763825
沉浸式:沉浸式就是要给用户提供完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉.
比如之前的一些游戏就做到了这一点
下面开始放代码和效果图
第一种 标准沉浸式
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
实现的效果图
已经有点沉浸式的感觉了
第二种 就是模仿饿了么状态栏的一种
/**
* 模仿饿了么 留下标题栏 这样的效果只有5.0以上的系统才支持
* 我们使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE,
* 注意两个Flag必须要结合在一起使用,
* 表示会让应用的主体内容占用系统状态栏的空间,
* 最后再调用Window的setStatusBarColor()方法将状态栏设置成透明色就可以了。
*
* 这种效果不叫沉浸式状态栏 姑且叫做透明状态栏
*/
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();
第三种 隐藏导航栏 看似沉浸式 但其实点击任何一处都会退出沉浸式
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
第四种 制作透明导航栏 跟饿了么的相似
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 void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
View decorView = 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);
}
}
在模拟器上看不出什么 在手机上运行的效果