关于沉浸式状态栏

来源:互联网 发布:上海淘宝摄影基地 编辑:程序博客网 时间:2024/05/21 17:09

隐藏ActionBar

 ActionBar actionBar = getSupportActionBar(); actionBar.hide();
注意,这里是v7包下的ActionBar

“沉浸式”状态栏

        // 要求5.0以上版本        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            // 设置内容占据导航栏展示            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);            // 设置状态栏透明(如果要自定义状态栏颜色可以设置该属性)            getWindow().setStatusBarColor(Color.TRANSPARENT);        }

以上代码可以实现“沉浸式”状态栏效果,但是根据Android的设计建议,ActionBar是不应该独立于状态栏而单独显示的,因此状态栏如果隐藏了,我们同时也需要调用ActionBar的hide()方法将ActionBar也进行隐藏。

隐藏导航栏        

        // 要求5.0以上版本        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            // 设置内容占据导航栏展示            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);            // 设置导航栏透明            getWindow().setNavigationBarColor(Color.TRANSPARENT);        }


真正的沉浸式模式


隐藏掉这三个元素就可以实现真正的沉浸式模式

重写Activity的onWindowFocusChanged()方法,然后加入如下逻辑即可:
public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @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);        }    }}
需要注意的是,只有在Android 4.4及以上系统才支持沉浸式模式,因此这里也是加入了if判断。

界面默认情况下是全屏的,状态栏和导航栏都不会显示。而当我们需要用到状态栏或导航栏时,只需要在屏幕顶部向下拉,或者在屏幕右侧向左拉,状态栏和导航栏就会显示出来,此时界面上任何元素的显示或大小都不会受影响。过一段时间后如果没有任何操作,状态栏和导航栏又会自动隐藏起来,重新回到全屏状态。

这就是最标准的沉浸式模式。--摘抄自郭婶博客~~!

相关链接:
郭婶详解:http://blog.csdn.net/guolin_blog/article/details/51763825