android 沉浸式状态栏

在开发过程中, 有的时候会出现需求就是将状态栏和标题栏一样的颜色.下面给出实现代码
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"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 沉浸状态栏指的是在应用中隐藏系统状态栏,使应用的界面能够占据整个屏幕空间,提供更加沉浸的使用体验。在 Android 4.4 KitKat(API 级别 19)及以上版本中,引入了沉浸状态栏的支持。 要实现沉浸状态栏,可以按照以下步骤进行操作: 1. 在 AndroidManifest.xml 文件中,为对应的 Activity 设置 `android:theme` 属性为 `@style/Theme.AppCompat.NoActionBar` 或者其他无 ActionBar 特性的主题。 2. 在对应 Activity 的 `onCreate` 方法中添加以下代码来隐藏系统状态栏: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } ``` 3. 如果你想要在状态栏下方留出一定的空间,可以设置 paddingTop,例如: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { int statusBarHeight = getStatusBarHeight(); View view = findViewById(R.id.your_view_id); view.setPadding(0, statusBarHeight, 0, 0); } private int getStatusBarHeight() { int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } return result; } ``` 这样就可以实现 Android 沉浸状态栏的效果。需要注意的是,沉浸状态栏可能会导致一些 UI 布局的问题,需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值