美文网首页我爱编程一起来学Kotlin~程序员
Android 补充 LayerDrawable 沉浸式状态栏

Android 补充 LayerDrawable 沉浸式状态栏

作者: 阿策神奇 | 来源:发表于2018-06-23 00:26 被阅读11次

          小菜前些日子整理了两次小小的沉浸式状态栏的总结:Android 沉浸式状态栏的多种样式Android 沉浸式状态栏以及伪沉浸式状态栏。今天小菜再稍稍补充一点,Java/Kotlin 代码中设置 LayerDrawable 方式实现沉浸式状态栏。
          LayerDrawable 为图层叠加,对应 xml 中的 layer-list 层次化方式展示 Drawable,小菜借用这种方式实现与以前一样的含有图片的沉浸式状态栏样式。
           GitHub Demo


    小菜的测试步骤如下:

    1. 绘制最底层背景色,且设置了一个小圆角,方便区分布局中的背景色;
    val radius0 = 10
    val outerR = floatArrayOf(radius0.toFloat(), radius0.toFloat(), radius0.toFloat(), radius0.toFloat(), radius0.toFloat(), radius0.toFloat(), radius0.toFloat(), radius0.toFloat())
    val roundRectShape0 = RoundRectShape(outerR, null, null)
    val shapeDrawableBg = ShapeDrawable()
    shapeDrawableBg.setPadding(0, 0, 0, 0)
    shapeDrawableBg.setShape(roundRectShape0)
    shapeDrawableBg.getPaint().setStyle(Paint.Style.FILL)
    shapeDrawableBg.getPaint().setColor(-0x444445)
    
    1. 设置 LayerDrawable 图层,底层为上面绘制的特定矩形颜色框,上一层为一张图片,可用网络下载或本地图片;
    // 创建资源对象
    val resources = resources
    // 创建数组对象
    val layers = arrayOfNulls<Drawable>(2)
    layers[0] = shapeDrawableBg
    layers[1] = resources.getDrawable(R.drawable.icon_bg)
    
    1. 在 Toolbar 或其他布局位置设置背景 background;
    // 设置背景
    toolbar.background = layerDrawable
    
    test_lay.background = layerDrawable
    

    Tips: 图层的叠加在 layers 中,图层越往上,添加到 layers[] 数组中数组下标越大。


          以下是小菜公众号,欢迎闲来吐槽~


    公众号.jpg

    相关文章

      网友评论

        本文标题:Android 补充 LayerDrawable 沉浸式状态栏

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