BallView
package com.bwie.ballviewdemo.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; /** * Created by lenovo on 2017/12/28. */ public class BallView extends View{ // 创建自定义View类BallView,自定义属性:ball_size // 初始化自定义属性 float ball_sizex=100; float ball_sizey=100; // 重写自定义View的三个构造方法 public BallView(Context context) { super(context); } public BallView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public BallView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //4. 实现onDraw()方法 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 1) 用canvas将屏幕设为白色 Paint paint=new Paint(); paint.setAntiAlias(true); paint.setStrokeWidth(5); // 2) 设置画笔颜色为红色 paint.setColor(Color.RED); paint.setStyle(Paint.Style.FILL); // 3) 绘制小圆作为小球,半径通过自定义属性设置 canvas.drawCircle(ball_sizex,ball_sizey,100,paint); } //5. 实现onTouchEvent方法,处理触摸事件 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ // 1) 实现MotionEvent.ACTION_DOWN,记录按下的x,y坐标 case MotionEvent.ACTION_DOWN: ball_sizex=event.getX(); ball_sizey=event.getY(); break; // 2) 实现MotionEvent.ACTION_MOVE 记录移动的x,y坐标 case MotionEvent.ACTION_MOVE: ball_sizex=event.getX(); ball_sizey=event.getY(); break; // 3) 实现MotionEvent.ACTION_UP 记录抬起的x,y坐标 case MotionEvent.ACTION_UP: ball_sizex=event.getX(); ball_sizey=event.getY(); break; } // 4) 使用 postInvalidate()方法实现重绘小球,跟随手指移动 postInvalidate(); return true; } }
自定义view 实现跟随手指移动的小球
最新推荐文章于 2020-08-13 13:47:14 发布