zoukankan      html  css  js  c++  java
  • 单个水波纹扩散

     布局

        <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);
                }
            }
        }
    }
  • 相关阅读:
    解决Bootstrap 试用手机端 布满全屏
    微信服务号认证流程
    微信回复文本超链接
    (4.28)for xml path 在合并拆分上的作用演示
    (4.27)查看存储过程中的依赖关系
    链接服务器XXX的OLE DB提供程序“SQLNCLI”无法启动分布式事务“
    (4.26)sql server存储过程优化
    (4.25)格式化T-SQL工具
    (4.24)sql server变量中set与select的区别
    (4.23)sql server区分大小写的检索
  • 原文地址:https://www.cnblogs.com/3674-it/p/5481772.html
Copyright © 2011-2022 走看看