前言
上篇博客已经是很久以前了,这段时间的确是忙了很多,技术相关的也做的少了。近期一个项目中,需要在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 =