Android自定义控件10----继承View实现水波纹效果

来源:互联网 发布:js小于或等于 编辑:程序博客网 时间:2024/05/11 05:27

效果图:


项目结构:


代码:

自定义控件WaveView
package com.example.shuibowen;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/** * Created by 16838 on 2017/11/9. */public class WaveView extends View {//  画笔    private Paint paint;//  圆心坐标    private float downX;    private float downY;//  圆环半径    private int radio = 5;    public WaveView(Context context, AttributeSet attrs) {        super(context, attrs);        initView();    }    private void initView() {        radio = 5;        paint = new Paint();//      设置红色        paint.setColor(Color.RED);//      设置平滑        paint.setAntiAlias(true);//      风格是圆环        paint.setStyle(Paint.Style.STROKE);    }    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            radio += 5;            int alpha = paint.getAlpha();            alpha -= 5;            if(alpha <0){                alpha =0;            }//          设置透明度            paint.setAlpha(alpha);//          设置圆环宽度            paint.setStrokeWidth(radio / 3);            invalidate();//调用onDraw();        }    };    /**     * 绘制     * @param canvas     */    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        if(paint.getAlpha()>0&&downX>0&&downY>0){            canvas.drawCircle(downX,downY,radio,paint);            handler.sendEmptyMessageDelayed(0,20);        }    }    /**     * 事件     * @param event     * @return     */    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()){            case MotionEvent.ACTION_DOWN:            case MotionEvent.ACTION_MOVE:                downX = event.getX();                downY = event.getY();                initView();                invalidate();                break;        }        return super.onTouchEvent(event);    }}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.shuibowen.MainActivity">    <com.example.shuibowen.WaveView        android:layout_width="match_parent"        android:layout_height="match_parent"         /></RelativeLayout>
参考视频:
http://www.gulixueyuan.com/course/124/learn#lesson/1935
源码下载:
Myself----shuibowen
http://download.csdn.net/download/zhaihaohao1/10111351

原创粉丝点击