Android无pading超简单超实用阴影解决方案

栏目: Android · 发布时间: 5年前

内容简介:这个迭代,UI在给了几张带阴影的图片,那种阴影范围很大,实际内容却只有一点的图片。效果类似这样。不知道这张图有没有表达清楚,就是那种图片之间阴影需要重叠才能使内容对其,阴影还有颜色的效果。

这个迭代,UI在给了几张带阴影的图片,那种阴影范围很大,实际内容却只有一点的图片。

效果类似这样。

Android无pading超简单超实用阴影解决方案

不知道这张图有没有表达清楚,就是那种图片之间阴影需要重叠才能使内容对其,阴影还有颜色的效果。

Android 5.0后才支持elevation属性,还不支持阴影颜色的设定。IOS同事笑了,他们说直接把阴影效果给他们,不要带阴影的图片,他们天然支持阴影,可以直接绘制。

于是,上网搜索,发现目前Andorid 平台实现阴影大概有这么几种方式

1、使用.9图 inloop.github.io/shadow4andr…

2、CardView 不支持阴影颜色

3、开源库ShadowLayout

4、模仿FloatingActionButton 实现阴影等等。

这些方式是可以实现阴影的显示,但是基本都是将阴影作为控件的一部分去实现的。这样,就需要给控件设置一些padding值,才能让阴影显示出来。这种方式使得布局很不方便对其。

我的解决方案

先上效果看看

Android无pading超简单超实用阴影解决方案

既然将阴影作为控件的一部分去实现不利于控件的布局和对其,那就咱就在ViewGroup里去实现阴影。绘制的时候根据子view的位置绘制出阴影,这样就不会影响控件的布局和对其了。

其实我觉得控件的阴影天然就应该在父布局去实现,就像现实中的阴影那样。

实现思路

1、继承ViewGoup

Android 中有FrameLayout、LinearLayout、RelativeLayout、ConstraintLayout等等,这些layout是为了进行子view布局而设计的,如果不进行背景色的设置,默认是不走ondraw方法的。

我们可以继承这些ViewGroup,设置setWillNotDraw(false)标志位强制进行绘制,这样我们就既拥有了布局的功能,也拥有了绘制的功能。然后就能在onDraw方法中,根据子view的位置绘制背景了。

2、复写onDraw方法绘制子view背景

这一步很简单,一个循环遍历子view就好了

如何绘制

1、绘制之前 需要设置 setLayerType(View.LAYER_TYPE_SOFTWARE, null)关闭硬件加速,因为一些高级绘制方法可能不支持硬件加速。

2、为paint设置 shadowLayer

paint.setShadowLayer(shadowLayoutParams.shadowRadius, shadowLayoutParams.xOffset
                            , shadowLayoutParams.yOffset, shadowLayoutParams.shadowColor);
复制代码

3、2那种绘制方式边缘有些整齐,可能会不满足需求。这里还有一种方式,为 Paint设置MaskFilter。 具体可以看看这篇文章 www.cnblogs.com/tianzhijiex…

我的实现

我个人比较喜欢使用ConstraintLayout等等,所以继承ConstraintLayout实现了一个demo,感觉效果还不错。

使用起来大概像这样。

Android无pading超简单超实用阴影解决方案

项目地址 github.com/ZhangHao555…

有没有更好的解决方式?


以上所述就是小编给大家介绍的《Android无pading超简单超实用阴影解决方案》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精益创业方法论

精益创业方法论

龚焱 / 机械工业出版社 / 2015-3 / 69.00元

为什么无数新创企业以失败告终? 为什么天才点子、完美计划和完美的执行是导致失败的关键? 颠覆性、创造性、混乱状况是否可以加以管理? Facebook在6年间以病毒一样惊人的速度传播,微信短短两年获得了6亿用户,这些公司都遵循着一套科学、严密的创业流程和工业方法,这种方法教你认清自以为是的假象,让你在亚马逊丛林的迷雾探险时成功找到水源,一切不是未来时,而是现在时,再砰然心动的点子、......一起来看看 《精益创业方法论》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具