概述:android5.0出现了点击出现Ripple涟漪效果,如果要想兼容低版本的效果,就自定义了一个控件,原理就是在画布上画圆,本控件命名RippleVIew继承RelativeLayout,然后做个圆形,不断增加圆形的半径,来实现涟漪的效果,还算是比较简单的实现方式。
代码实现:
1.做圆形Bitmap:
public Bitmap makeCircleBitmap() {
Bitmap output = Bitmap.createBitmap(getWidth(), getHeight(),
Config.ARGB_8888);
Canvas canvas = new Canvas(output);
canvas.drawARGB(0, 0, 0, 0);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor((int) rippleColor);
canvas.drawCircle(x, y, radius, paint);
return output;
}
2.在画布上绘画
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//图片的裁剪区域
Rect src = new Rect(0, 0, getWidth(), getHeight());
//屏幕的裁剪区域
Rect dst = new Rect(0, 0, getWidth(), getHeight());
//特点的图片区域画在特定的画布区域,这种方式也可以实现放缩的效果
canvas.drawBitmap(makeCircleBitmap(), src, dst, null);
invalidate();//刷新画布
3.在activity里实现RippleVIew里定义的接口ICoallBack,实现click和press事件
public interface ICoallBack {
public void onClick(View v);
public void onPress(View v, boolean focus);
}
下载地址:RippleVIew