===========新建一个MyWave类====================
private int [] colors = new int[]{Color.BLUE,Color.RED,Color.YELLOW,Color.GREEN,Color.BLACK,Color.DKGRAY};
///控制是否继续执行动画
protected boolean isRunning = false;
/**
* 装圆的集合
*/
private ArrayList<Wave> wList;
public MyWave(Context context, AttributeSet attrs) {
super(context, attrs);
wList = new ArrayList<MyWave.Wave>();
}
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
System.out.println(wList.size()+"-----------");
//刷新数据
flushData();
//刷新页面
invalidate();
if(isRunning){
handler.sendEmptyMessageDelayed(1, 50);
}
break;
default:
break;
}
};
};
@SuppressLint({ "ClickableViewAccessibility", "NewApi" })
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
int x = (int)event. getX();
int y = (int)event. getY();
setCircle(x, y);
System.out.println(x+"===="+y);
break;
}
return true;
}
/**
* 更新圆的大小和透明度
*/
protected void flushData() {
for(int i=0;i<wList.size();i++){
Wave wave = wList.get(i);
//获得画笔透明度
int alpha = wave.p.getAlpha();
//透明的越来越高
alpha= alpha-5;
if(alpha<5){
alpha=0;
wList.remove(i);
// isRunning=false;
}
//设置的透明度越来越高
wave.p.setAlpha(alpha);
//扩大半径
wave.r=wave.r+3;
wave.p.setStrokeWidth(wave.r/3);
}
if(wList.size() == 0){
isRunning = false;
}
}
/**
* 设置圆
* @param x
* @param y
*/
private void setCircle(int x, int y) {
if(wList.size()==0){
createAndAddCircle(x,y);
isRunning=true;
handler.sendEmptyMessage(1);
}else{
createAndAddCircle(x,y);
}
}
@Override
protected void onDraw(Canvas canvas) {
for(int i=0;i<wList.size();i++){
Wave wave = wList.get(i);
canvas.drawCircle(wave.cx, wave.cy, wave.r, wave.p);
}
}
/**
* 创造圆并且添加
*/
private void createAndAddCircle(int x, int y) {
Wave wave=new Wave();
wave.cx=x;
wave.cy=y;
Paint paint=new Paint();
paint.setStyle(Style.STROKE);
paint.setAntiAlias(true);
paint.setColor(colors[(int) (Math.random()*6)]);
wave.p=paint;
wList.add(wave);
}
// 圆的封装类
private class Wave {
// 圆心
int cx;
int cy;
// 画笔
Paint p;
// 半径
int r;
}
=======================布局=============================
<pre name="code" class="java"><com.example.myview.MyWave
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>