android 沉浸模式(状态栏透明 跟随布局颜色)


沉浸模式:

当启用该模式,应用程序的界面将占据整个屏幕,系统自动将隐藏系统的状态栏和导航栏,让应用程序内容可以在最大显示范围呈现,增加大屏体验,而当需要查看通知的时候只需要从顶部向下滑动就能呼出通知栏。
这是谷歌对于自己的沉浸模式的解释,说白了就是全屏扩展,但其实我想要的并不是这个效果,个人认为这个沉浸模式只需要将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.



版权声明:本文为u014702999原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。