android 沉浸式状态栏

来源:互联网 发布:phpcurl post json 编辑:程序博客网 时间:2024/06/07 23:35

在开发过程中, 有的时候会出现需求就是将状态栏和标题栏一样的颜色.下面给出实现代码
PS:有的时候可能会出现让你实现白色的状态栏, 那你就可以告诉你的UI或者产品了, 你做不到.在我知道的里面,好像只有魅族和小米能够实现.其他的手机型号是不能将上方的电池栏里面东西变成黑色的.白色的沉浸式状态栏只能实现成灰白色的.

导入依赖:compile ‘com.gyf.barlibrary:barlibrary:2.2.5’

1.在你的Activity的onCreate()和onDestroy()方法中加入如下代码.

@Override  protected void onCreate(@Nullable Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      //初始化,默认透明状态栏和黑色导航栏      ImmersionBar.with(this).init();  }  @Override  protected void onDestroy() {      super.onDestroy();      //不调用该方法,如果界面bar发生改变,在不关闭app的情况下,退出此界面再进入将记忆最后一次bar改变的状态      ImmersionBar.with(this).destroy();   }

2.上面的如果不能满足你的需求 那么可以自定义一些属性

ImmersionBar.with(this)               .transparentStatusBar()  //透明状态栏,不写默认透明色               .transparentNavigationBar()  //透明导航栏,不写默认黑色               .transparentBar()  //透明状态栏和导航栏,不写默认状态栏为透明色,导航栏为黑色               .statusBarColor(R.color.colorPrimary)     //状态栏颜色,不写默认透明色               .navigationBarColor(R.color.colorPrimary) //导航栏颜色,不写默认黑色               .barColor(R.color.colorPrimary)  //同时自定义状态栏和导航栏颜色               .statusBarAlpha(0.3f)  //状态栏透明度,不写默认0.0f               .navigationBarAlpha(0.4f)  //导航栏透明度,不写默认0.0F               .barAlpha(0.3f)  //状态栏和导航栏透明度,不写默认0.0f               .statusBarDarkFont(true)   //状态栏字体是深色,不写默认为亮色               .flymeOSStatusBarFontColor(R.color.btn3)  //修改flyme OS状态栏字体颜色               .fullScreen(true)   //有导航栏的情况下,activity全屏显示               .hideBar(BarHide.FLAG_HIDE_BAR)  //隐藏状态栏或导航栏或两者,不写默认不隐藏               .addViewSupportTransformColor(toolbar)  //设置支持view变色,可以添加多个view,不指定颜色,默认和状态栏同色,还有两个重载方法               .titleBar(view)    //解决状态栏和布局重叠问题,任选其一               .statusBarView(view)  //解决状态栏和布局重叠问题,任选其一               .fitsSystemWindows(true)    //解决状态栏和布局重叠问题,任选其一,默认为false,当为true时一定要指定statusBarColor(),不然状态栏为透明色               .supportActionBar(true) //支持ActionBar使用               .statusBarColorTransform(R.color.orange)  //状态栏变色后的颜色               .navigationBarColorTransform(R.color.orange) //导航栏变色后的颜色               .barColorTransform(R.color.orange)  //状态栏和导航栏变色后的颜色               .removeSupportView(toolbar)  //移除指定view支持               .removeSupportAllView() //移除全部view支持               .addTag("tag")  //给以上设置的参数打标记               .getTag("tag")  //根据tag获得沉浸式参数               .reset()  //重置所以沉浸式参数               .keyboardEnable(true)  //解决软键盘与底部输入框冲突问题,默认为false               .init();  //必须调用方可沉浸式

3.写到这里就可以实现沉浸式状态栏了, 但是你会发现你的界面会从屏幕最上方开始浦建,导致你的状态栏会覆盖你的部分布局
解决办法:在你的XML文件的根布局上加入代码

android:fitsSystemWindows="true"