Android进阶:十二、最简单的方式实现自定义阴影效果

本文介绍了如何在Android中实现自定义阴影效果,通过创建ShadowCardView类,利用Paint和Canvas的setShadowLayer方法,实现颜色可定制、模糊度可控的阴影。相比CardView,这种方法提供更大的灵活性,满足UI设计需求。
摘要由CSDN通过智能技术生成

网话说UI设计有三宝:
透明,阴影,加圆角。很多UI在做设计的时候都喜欢做卡片形式,然后添加阴影。卡片UI确实挺好看,但是对Android开发者来说,显示阴影却并不那么手到擒来,因为Android对阴影没有做出很好的支持。

CardView
谷歌也许早就注意到了UI的三宝之一阴影,于是开发了一个继承FrameLayout的CardView公开发这使用,这个控件虽然在v7包里,但是需要单独添加依赖才可以使用,就好像不是亲生的似的!

CardView本质上继承FrameLayout,需要添加依赖才可以使用:

compile 'com.android.support:cardview-v7:25.3.1'

当你知道它继承FrameLayout的时候你就知道怎么使用了,但是这个CardView有很多局限性,比如不能修改阴影的颜色,不能修改阴影的深浅。这就很诡异了,根本无法满足UI设计潮流的内心。
那为了产品蒸蒸日上,早日走上人生巅峰,实现财富自由,应该如何让你的APP支持修改阴影的颜色呢?

有个很暴力的办法,就是吧CardView的代码自己抠出来,然后自己定制.
但是现在我自己探索了一个新的较为简单的添加阴影的实现方案,仅供参考

ShadowCardView
思路:首先要明确阴影的实现思路是什么,其实就是颜色导致的视觉错觉。说白了就是在你的Card周围画一个渐变的体现立体感的颜色。

基于上述思路,我们在一个在一个view上画一个矩形的图形,让他周围有渐变色的阴影即可。于是我们想起几个API:

  • 类:Paint 用于在Android上画图的类,相当于画笔
  • 类:Canvas 相当于画布,Android上的view的绘制都与他相关
  • 方法:paint.setShadowLayer可以给绘制的图形增加阴影,还可以设置阴影的颜色
    在这里插入图片描述

如上图我们,红色部分使我们绘制的图形,边框以内,红色之外的是阴影的显示部分。
有了以上的知识点已经知道可以自己画阴影了,但是什么时机开始画呢?

我们知道谷歌开发的CardView的控件继承了FrameLayout,方便我们自由扩展。那么我们也需要继承FrameLayout。

ShadowCardView继承FrameLayout之后,可以重写其一个方法:

@Override
    protected void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
    }

这个方法是ViewGroup在绘制子View的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值