当前位置: 代码迷 >> 综合 >> 如何轻松打造沉浸式状态栏
  详细解决方案

如何轻松打造沉浸式状态栏

热度:19   发布时间:2023-10-23 07:40:12.0

沉浸式状态栏相对于用户的体验是不错的,可以看到很多我们常用的APP(支付宝)其中就使用到了,确实效果不错,后面自己去研究了一波,现在合大家分享一下如何快速的让你的APP提升逼格,废话不多说,上车就是了。

1,首先在你的gradle中添加         compile 'com.gyf.barlibrary:barlibrary:2.2.7'compile '         做到这你就成功一半了,说出来你敢信吗?

2, public class BaseActivity extends Activity {

        private static final String NAVIGATIONBAR_IS_MIN = "navigationbar_is_min";
        public ImmersionBar mImmersionBar;

  @Override
    protected void onCreate(Bundle BundlesavedInstanceState) {
        super.onCreate(BundlesavedInstanceState);
            if (isImmersionBarEnabled()) {

            initImmersionBar();
        }
    }

 protected void initImmersionBar() {

        //在BaseActivity里初始化
        mImmersionBar = ImmersionBar.with(this);
        mImmersionBar.init();
        //解决华为emui3.0与3.1手机手动隐藏底部导航栏时,导航栏背景色未被隐藏的问题
        if (OSUtils.isEMUI3_1()) {
            //第一种
            getContentResolver().registerContentObserver(Settings.System.getUriFor
                    (NAVIGATIONBAR_IS_MIN), true, mNavigationStatusObserver);
            //第二种,禁止对导航栏的设置
            mImmersionBar.navigationBarEnable(false).init();
        }
    }

  private ContentObserver mNavigationStatusObserver = new ContentObserver(new Handler()) {

        @Override
        public void onChange(boolean selfChange) {
            int navigationBarIsMin = Settings.System.getInt(getContentResolver(),
                    NAVIGATIONBAR_IS_MIN, 0);
            if (navigationBarIsMin == 1) {
                //导航键隐藏了
                mImmersionBar.transparentNavigationBar().init();
            } else {
                //导航键显示了
                mImmersionBar.navigationBarColor(android.R.color.black) //隐藏前导航栏的颜色
                        .fullScreen(false)
                        .init();
            }
        }
    };

 

      //是否可以使用沉浸式
 
   protected boolean isImmersionBarEnabled() {
        return true;
    }


    @Override
    protected void onResume() {
        super.onResume();
    }


    @Override
    protected void onStart() {
        super.onStart();
    }

   //销毁页面的时候也要一起销毁
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mImmersionBar != null) {
            mImmersionBar.destroy();
        }
    }

}

最后,就是会有导航栏折叠的问题,这时候不要慌,给你一个最简单的处理方式:

在你的标题栏前面多添加一个LinearLayout,高度为25dp,将布局顶上去。哈哈,我真是机智的少年!!

<LinearLayout
android:layout_width="match_parent"
android:layout_height="25dp"
android:background="@drawable/shape_btn_unable" />颜色自己会改吧

搞定!!!快去试试,提升逼格啦


  相关解决方案