自定义圆形,可根据鼠标移动,按下移动抬起事件

来源:互联网 发布:1-10阶乘分之一编程 编辑:程序博客网 时间:2024/04/27 13:03
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    android:orientation="vertical"    > <com.example.lianxiday03_02customcircle.view.CustomCircleView       android:layout_width="match_parent"       android:layout_height="match_parent" />
</LinearLayout>

自定义的CustomCircleView 继承View

public class CustomCircleView extends View{    //初始化paint画笔    private Paint mpaint;    //初始化的    private int cx = 300;//圆的中心x    private int cy = 300;//圆的原点y    public CustomCircleView(Context context) {        super(context);    }    public CustomCircleView(Context context, AttributeSet attrs) {        super(context, attrs);        mpaint = new Paint();        mpaint.setColor(Color.GREEN);        mpaint.setStyle(Paint.Style.STROKE);//空心的        mpaint.setAntiAlias(true);//抗锯齿,,没有毛边儿        mpaint.setStrokeWidth(10);//边框宽度     }    public CustomCircleView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        //分析事件的类型        switch (event.getAction()){            //鼠标按下:            case MotionEvent.ACTION_DOWN:                System.out.println("event ACTION_DOWN  = "+event.getRawX() + "  " + event.getRawY());                break;            case MotionEvent.ACTION_MOVE:                System.out.println("event ACTION_MOVE ="+event.getRawX() + "  " + event.getRawY());                cx = (int) event.getX();//getX(),是距离当前视图x轴的位置                cy = (int) event.getY();//getY()是距离当前视图的y                //刷新                invalidate();               // postInvalidate();//子线程刷新                break;            case MotionEvent.ACTION_UP:                System.out.println("event ACTION_UP = " + event.getRawX() + "  " + event.getRawY());                break;        }        return true;//必须返回true    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        //获取当前视图的宽度       // int width = getWidth()/2;        //第一个参数是 cx:x轴中心 cy: 第二个参数是y轴中心 第三个参数是半径  第四个是画笔        canvas.drawCircle(cx,cy,200,mpaint);    }}

原创粉丝点击