Android 控件的阴影效果的实现方式有很多种,但是许多都有高低版本的兼容性问题。
于是,我进行了一些调研,发现 Github 上面有两种方案,兼容性比较好,基本适配了高低版本问题
- YCCardView
- ShadowLayout
下面详细介绍一下
ShadowLayout
https://github.com/lihangleo2/ShadowLayout
优点
- 支持定制化阴影
- 系统shape功能:项目中shape、selector
缺点
- Bitmap 缓存依赖于 Glide,IMO 项目中没有使用 Glide,改造成本大
- 圆角也是依赖 Glide 实现
支持功能
支持定制化阴影:
- 随意修改阴影颜色值
- 阴影圆角:可统一设置圆角,也可对某几个角单独设置
- x,y轴阴影偏移
- 随意修改阴影扩散程度
- 隐藏阴影:隐藏某边或多边阴影,或完全隐藏
不止于阴影;系统shape功能:项目中shape、selector、ripple统统拥有。解放你的双手,清空项目drawable文件夹
- shape样式:pressed(按钮点击)、selected(按钮选择)、ripple(点击水波纹)
- 背景色设置
- stroke边框设置
- 渐变色背景色值
- 按钮是否可被点击
- 可绑定textView后,可伴随文案变化,可伴随文案颜色变化
- 支持设置图片背景,支持图片selector
效果展示
YCCardView
https://github.com/yangchong211/YCCardView
paint.setShadowLayer(float radius, float dx, float dy, int shadowColor);
这个方法可以达到这样一个效果,在使用canvas画图时给视图顺带上一层阴影效果。
简单介绍一下这几个参数:
- radius: 阴影半径,主要可以控制阴影的模糊效果以及阴影扩散出去的大小。
- dx:阴影在X轴方向上的偏移量
- dy: 阴影在Y轴方向上的偏移量
- shadowColor: 阴影颜色
优点
- 支持设置阴影偏移效果,支持设置扩散阴影,设置圆角大小,设置阴影颜色,还可以设置上下左右某个方法显示阴影效果。
缺点
- RecyclerView的item设置阴影,Bitmap 的缓存知识简单存储在 map 当中,在实际使用场景可能会有问题,自测 Demo 暂时没发现
效果展示
小结
本文介绍了 Android Github 上面优秀的两种阴影方案,完美兼容高低版本问题,你学会了嘛,赶紧动手搞起来。