Android 5.0水波纹效果

本文记录了在Android 4.4上实现5.0水波纹特效的过程,特别是在Button等控件点击时的效果。通过重载dispatchTouchEvent获取坐标,并在dispatchDraw中绘制逐渐扩大的Circle来实现水波纹超越控件边界的视觉效果。代码示例展示了如何在一个TabLayout上实现这一特性,并提到了需要注意的长按事件混淆问题。
摘要由CSDN通过智能技术生成

前言
上篇博客已经是很久以前了,这段时间的确是忙了很多,技术相关的也做的少了。近期一个项目中,需要在4.4上实现一些5.0上的特效,例如Button之类的控件点击时的水波纹效果。在blog里找到了任教主的一篇博文,受到了启发,将他的Demo改动了一些就实现了。具体在应用到自己项目中时遇到了些需求变化和其他问题,这里就相当于做一个记录。

效果演示
AS还是不怎么会用,gif的图就没有了,这里给个静态的
这里写图片描述
这里说明一下,这个截图是一个拨号盘,在拨号的时候会有水波纹效果。

对比Demo中的效果
![这里写图片描述](https://img-blog.csdn.net/20150729171157159)

从效果图中可以看出与其他水波纹Demo的差异之处在于这个水波纹可以突破控件自身的大小。

思路
重载dispatchTouchEvent获取相应的坐标以及绘制对象,
重载dispatchDraw,根据点击事件来绘制一个逐渐变大的Circle。

代码及说明
Java代码

 public class CustomTableLayout extends TableLayout{
   

    private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    private Paint mBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

    /**目标控件宽度*/
    private int mTargetWidth;

    /**目标控件高度*/
    private int mTargetHeight;

    /**最小高宽*/
    private int mMinBetweenWidthAndHeight;
    private int mMaxBetweenWidthAndHeight;

    /**水波纹最大半径*/
    private int mMaxRevealRadius;

    /**水波纹半径增量*/
    private int mRevealRadiusGap;

    /**水波纹半径*/
    private int mRevealRadius = 0;

    /**布局处于屏幕的坐标*/
    private int[] mLocationInScreen = new int[2];

    /**是否绘制水波纹*/
    private boolean mShouldDoAnimation = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值