美文网首页
超好用的android状态栏库

超好用的android状态栏库

作者: ErolC鱼 | 来源:发表于2020-11-14 12:14 被阅读0次
    前因

    由于每个项目几乎或多或少都需要对状态栏进行操作,最起码的就是改变其背景颜色。但是每每需要操作状态栏的时候就会觉得很麻烦,设置一堆flag,还要维护。所以就有了这个库,该库将状态栏封装成一个对象。让操作android状态栏变得简单一些。

    项目地址

    ExStatusBar

    或者直接依赖

    implementation 'com.github.ErolC:ExStatusBar:1.1.3'
    

    注意库的入口是ExStatusBar哦,如果是kotlin,本库也提供了一些扩展函数供其使用

    版本适配表现

    由于Android5.0开始,才能真正修改状态栏的背景颜色,4.4到5.0之间只能半隐藏状态栏背景,所以在实现上,加上了View作为其背景。而在api23(也就是6.0)之前是没办法改变字体颜色的。所以这个库的表现会分为三部分:

    第一部分

    4.4以下(不包括4.4,最低只支持到4.1),无法改变背景颜色,只能做普通的获取操作,比如获取状态栏高度,以及隐藏或入侵(由于状态栏无法变透明,入侵之后会被挡住,所以入侵也相当于没用)

    第二部分

    4.4到6.0,除了不能切换状态栏字体颜色(由于6.0之后也只是能设置状态栏字体颜色为白色和黑色)其他操作都是可以的

    第三部分

    在6.0以后,就可以使用完整的功能了,而且在设置背景颜色(背景设置为图片或者drawable除外)的时候,字体颜色还可以根据背景颜色而自动切换到相应的颜色。

    使用

    本库将状态栏封装成ExStatusBar对象。通过其静态方法create可以得到一个StatusBar接口对象。该对象包含了可以操作状态栏的各种接口:

        getHeight //获取状态栏高度
        getBackgroundColor //获取背景色
        setBackgroundColor //设置背景色,在6.0以上,状态栏字体会跟随背景改变,比如设置黑色背景,字体会变成白色
        setBackground       //设置背景,可以是drawable,也可以是drawable的资源id
        getBackground   //获取背景,是drawable
        setTextColor    //设置字体颜色,只有两种,亮系和暗系
        hide        //隐藏状态栏,在状态栏位置下滑可临时呼出状态栏,一段时间后会自动收起
        show        //展示状态栏,和上面是一对
        immersive   //所谓的"沉浸式",我更喜欢称之为"侵入式"
        isShow //状态栏是否展示
        isDark //字体颜色是否是暗系(黑色)
    
    

    如果是kotlin,那么还可以使用库配备的扩展方法进行创建,分别是getStatusBar()以及statusBar{},都是activity和fragment的扩展方法。

    额外场景适配

    背景

    fragment的使用场景众多,由于fragment操作的状态栏和其他共同依附在同一个activity的fragment操作的是同一个,所以需要对一些场景做处理,避免其他fragment操作了状态栏之后的脏数据污染了其他fragment的状态栏操作。

    解决

    目前适配了viewpager+fragment的两种懒加载场景,至于如何分辨在什么场景下使用这两种懒加载,最简单的分辨就是,当fragmentsetUserVisibleHint被废弃的时候,就应该使用最新的懒加载方式。如果不知道两种懒加载方式,网上文章很多,请自行查找。而最新的懒加载方式,本库完美支持,不需要额外的设置,而对于旧的懒加载方式,需要在setUserVisibleHint方法中调用扩展方法setUserVisibleHint或者ExStatusBar.setUserVisibleHint(this)

    最后

    这是我发布的第一个库,如果使用的感觉还好,希望可以给个star,如果觉得有什么不对,不正确的地方或者建议欢迎反馈,评论。

    相关文章

      网友评论

          本文标题:超好用的android状态栏库

          本文链接:https://www.haomeiwen.com/subject/xfvxbktx.html