[Android开发]自定义阴影颜色,自定义ShadowLayout,自定义elevation实现的阴影效果

本文介绍了一种通过绘制渐变色实现自定义阴影效果的方法。利用LinearGradient和RadialGradient分别处理边框和角落,实现不同颜色及宽度的阴影效果。通过调整Padding值,可以灵活改变阴影的显示范围。

一、先来看下效果图

二、解决的场景

        1、UI经常设计一些不是黑色的Shadow阴影,仅仅通过elevation是无法满足需求的,Android 原装Shadow颜色在Android 9及以上才可通过outlineSpotShadowColor进行设置,设置颜色有版本限制

        2、即便是通过outlineSpotShadowColor来设置,四个边的宽度无法自由调整

三、实现思路与原理

        1、阴影可以通过渐变色来实现,在布局上绘制渐变线条即可实现阴影

        2、首先绘制四个边通过给Paint设置shader来实现,LinearGradient是成线性渲染,所以使用它最为简单,以下以底边为例展示

//绘制底部阴影
float[] ptsBottom = new float[4];

ptsBottom[0] = shadowMaxLength / 2f + shadowRadius;
            ptsBottom[1] = height - shadowMaxLength / 2f;
            ptsBottom[2] = width - shadowMaxLength / 2f - shadowRadius;
            ptsBottom[3] = height - shadowMaxLength / 2f;
LinearGradient linearGr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值