布局
<com.ee.MyWaveD android:layout_width="match_parent" android:layout_height="match_parent" > </com.ee.MyWaveD>
类
package com.ee; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.os.Handler; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class MyWaveD extends View { public MyWaveD(Context context, AttributeSet attrs) { super(context, attrs); initView(); } private Paint paint; @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); switch (event.getAction()) { /* * 当按下的时候开始绘制圆环水波纹 */ case MotionEvent.ACTION_DOWN: // 1. 设置圆心 startX = event.getX(); startY = event.getY(); // 2.根据圆心创建新的圆 initView(); // 3.绘制 invalidate(); break; default: break; } return true; } private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { // 1.透明度改变-小 int alpha = paint.getAlpha(); alpha -= 5; if (alpha < 0) { alpha = 0; } // 透明度:0~255之间 paint.setAlpha(alpha); // 2.半径变大 radius += 5; paint.setStrokeWidth(radius / 3); // 3.再次绘制一个,执行onDraw方法 invalidate(); }; }; /* * 第一步、构造器 */ /** * 初始化View */ private int radius;// 半径 private void initView() { paint = new Paint(); // 设置颜色 paint.setColor(Color.RED); // 设置抗锯齿 paint.setAntiAlias(true); // 设置圆环样式 paint.setStyle(Style.STROKE); // 半径为5 radius = 5; paint.setStrokeWidth(radius / 3); } // 圆形坐标 private float startX; private float startY; /** * 绘制环形水波纹 */ @Override protected void onDraw(Canvas canvas) { if (paint.getAlpha() > 0) { if (startX > 0 && startY > 0) { // 绘制一个圆环 canvas.drawCircle(startX, startY, radius, paint); // 绘制的同时,发送一个延迟消息 handler.sendEmptyMessageDelayed(0, 50); } } } }
时间: 2024-11-02 10:01:07