android单边阴影、多边阴影和圆角阴影

针对Android设计中复杂的阴影需求,本文介绍了一种自定义视图库FpShadowLayout,通过使用LinearGradient和RadialGradient实现不同方向和形状的阴影效果,包括单边、多边以及圆角阴影。文中详细讲解了阴影的绘制原理,包括改变渐变方向来控制阴影位置,以及处理圆角矩形阴影的特殊技巧。此外,还提供了GitHub项目链接和使用示例。
摘要由CSDN通过智能技术生成

       现在好多设计都喜欢用阴影,各种颜色、各种图形的阴影做起来费时费力,而官方的cardview不支持设置阴影颜色,阴影位置也是更拟物化的z轴阴影,不能符合设计的要求,因此专门写了一个工具。

       GitHub地址:https://github.com/maxiaoyi/FpShadowLayout

      用法:implementation 'com.mxy.fpshadowlayout:fpshadowlayout:0.0.1'

       效果如图:

       核心实现是用LinearGradient,自定义viewGroup,设置阴影长度对应的padding,画出阴影。

       首先,来看一下LinearGradient的用法:

        int[] colors = {Color.parseColor("#ff0000"), Color.parseColor("#00ffffff")};

        float[] floats = new float[]{0f, 1.0f};

        LinearGradient gradient = new LinearGradient(0,0,100,0,colors, floats, Shader.TileMode.CLAMP);

        paint.setShader(gradient);

        RectF rectF = new RectF(0, 0, 100, 50);

        canvas.drawRect(rectF, paint);

colors是一组颜色数组,代表颜色从哪一种过渡到另外一种,可是两个或者三个颜色。floats是位置权重的数组,代表每一种颜色所占位置的权重,同样可以是两个或者三个,数量要和colors对应。

lineargradient的构造方法中,重点说一下前面四个参数,这四个参数实际上是定义了渐变的方向,x如果从0到n,y是从0到0的话,表示渐变在x轴上从左往右平铺。代码

new LinearGradient(0,0,100,0,colors, floats, Shader.TileMode.CLAMP);

具体效果:

接下来变一下,x从n到0,y不变:

可以看到颜色反转了,变成从右往左平铺。接下来x保持都是0,y从0到n:

此时颜色变成了y轴上从上往下平铺&

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值