在android上模拟ios阴影效果

在Android上创建iOS风格的阴影效果
本文探讨如何在Android应用中实现类似iOS的阴影效果。通过对比CardView和FloatingActionButton的实现方式,作者建议使用Drawable来创建阴影。文章提到Android 4.4之前的gradient显示问题,并提供了一个解决方案,即通过构建GradientDrawable,转换为Bitmap,进行高斯模糊,然后设置为ImageView的背景。这种方法允许自定义颜色和形状,但需要额外的ImageView。作者分享了在不同Android版本上的效果截图,并指出可能的改进方向,如自定义ViewGroup或调整foreground缩放。

update一下,下面方法现在来看很low,其实最简单的是直接自定义一个drawable

=============================================================

android上大部分时候阴影是不符合产品需求的,就比如我们就要求实现一个类似ios的圆形图片的阴影???

cardview阴影就挺好,可是他喵了个咪的,不符合需求啊

那么该怎么实现类似cardview或者类似ios上面的阴影效果呢?

暂时只跟踪了cardview和floatingActionButton的实现

1、cardview是通过setCardElevation来设置阴影的,通过跟踪代码可以发现cardview最终会调用RenderNode进行底层实现,要跟底层实现可以去找android framework层的代码,当然我们只是为了简单的实现一个阴影效果,所以暂不讨论其底层具体实现

2、FloatingActionButton,通过跟踪代码可以发现它是通过drawable来实现的,很明显,对我们来说通过drawable来实现更简单一些

实现的过程中还遇到一个问题,就是在4.4之前以及5.0之后drawable中的gradient显示差距巨大,这是android的一个bug,具体参考 https://issuetracker.google.com/issues/37007621

不过在将drawable改为代码实现后会稍微好一些,所以也算一个解决方案吧

具体实现思路:

通过构建gradientdrawable实现阴影渐变,然后将drawable转为bitmap(由于后面要做高斯模糊,所以尽量构建一个小一点的bitmap),再将bitmap进行高斯模糊,之后将bitmap作为背景设置到一个imageview上,当然这样实现的一个弊端就是我们需要在要展示的图片后面再放一张图片-。-,没什么好思路,感觉这样子实现最好的方式就是自定义一个viewgroup,预留空间然后构建阴影,再或者设置一个backgournd一个foreground,然后将foreground进行一定比例的缩放?或许可以,之后再研究吧,也不是什么主要功能

不过有一个好处,只要是gradient可以画出来的渐变,我们都可以做成阴影,可以自定义颜色自定义形状

附4.4以及5.0以上效果图

4.4


 5.0+



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值