沉浸模式:
当启用该模式,应用程序的界面将占据整个屏幕,系统自动将隐藏系统的状态栏和导航栏,让应用程序内容可以在最大显示范围呈现,增加大屏体验,而当需要查看通知的时候只需要从顶部向下滑动就能呼出通知栏。
这是谷歌对于自己的沉浸模式的解释,说白了就是全屏扩展,但其实我想要的并不是这个效果,个人认为这个沉浸模式只需要将activity设为全屏不显示状态栏就可以达到差不多的效果。
下面是沉浸模式的控制代码,再此感谢作者:http://www.jb51.net/article/72150.htm
@SuppressLint("NewApi")
public static void hideSystemUI(View view) {
view.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);
}
@SuppressLint("NewApi")
public static void showSystemUI(View view) {
view.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
彩色状态栏(沉浸式):
沉浸式状态栏的来源是因为很多手机用的是实体按键,没有虚拟键(比如华为手机系统,底部的home 返回键 都是在屏幕上虚拟的),开了沉浸模式就只有状态栏消失了。于是沉浸模式成了沉浸式状态栏,两者很容易混淆。个人习惯叫状态栏的颜色自适应,或彩色状态栏,与google沉浸模式的概念无关 。
在此感谢作者:http://blog.csdn.net/jdsjlzx/article/details/50437779
java代码如下:
//透明状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
// Translucent status bar
window.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// //透明状态栏
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// //透明导航栏
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
xml代码如下:
//activity最外层的布局中添加,
android:fitsSystemWindows="true"
android:clipToPadding="true"
android:background="@color/blue"
java代码是在判断当前手机sdk版本, kitkat表示系统版本为4.4, 当低于这个版本时,无法设置彩色状态栏;将此java代码放在oncreate中就行了,对应的布局文件添加xml代码,OK.