水波纹的简介

来源:互联网 发布:mac如何连接移动硬盘 编辑:程序博客网 时间:2024/04/27 21:13

其实就是自定义view,

然后通过触摸事件画一个圆

把圆放入一个集合,

在ondraw中便利集合中的圆,然后每一个根据本来的半径r和透明度不断地增加透明度和半径r,再次画出来

package com.minle.test;import java.util.Timer;import java.util.TimerTask;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;public class MyView extends View {private int radius;private Paint paint;private float cx;private float cy;public MyView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub// 获得自定义的属性,即获得自定义的半径TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.MyCircle);radius = ta.getInt(R.styleable.MyCircle_radius, 0);// 获得半径长度 默认0ta.recycle();// 关闭资源么}public MyView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}public MyView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {paint = new Paint();paint.setColor(Color.RED);paint.setStyle(Style.STROKE);// //设置画笔为空心paint.setStrokeWidth(2);// 画笔线宽paint.setAntiAlias(true);// /抗锯齿canvas.drawCircle(cx, cy, radius, paint);super.onDraw(canvas);}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubcx = event.getX();cy = event.getY();Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stub}}, 0, 100);invalidate();//重新绘制此viewreturn true;}}

再在xml中布局就可以了

0 0