为了账号安全,请及时绑定邮箱和手机立即绑定

Android 补充 LayerDrawable 沉浸式状态栏

标签:
Android

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

webp



小菜的测试步骤如下:

  1. 绘制最底层背景色,且设置了一个小圆角,方便区分布局中的背景色;

val radius0 = 10val 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

webp

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



作者:老菜和尚


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消