前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >补充:Android LayerDrawable 沉浸式状态栏

补充:Android LayerDrawable 沉浸式状态栏

作者头像
阿策小和尚
发布2019-08-12 14:36:08
5880
发布2019-08-12 14:36:08
举报
文章被收录于专栏:阿策小和尚阿策小和尚

和尚前些日子整理了两次小小的沉浸式状态栏的总结: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[] 数组中数组下标越大。


以下是和尚公众号,欢迎闲来吐槽~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿策小和尚 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档