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 继承Viewpublic 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); } }
自定义圆形,可根据鼠标移动,按下移动抬起事件
最新推荐文章于 2024-07-29 21:59:18 发布