<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <!--可以移动的圆形--> <lianxi.view.CustomCircleView android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>package lianxi.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; import static android.R.attr.x; /** * Created by muhanxi on 17/11/1. */ public class CustomCircleView extends View { private Paint mPaint; private int cx = 200; private int cy = 200; public CustomCircleView(Context context) { super(context); } public CustomCircleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mPaint = new Paint(); mPaint.setColor(Color.RED); mPaint.setStyle(Paint.Style.STROKE); mPaint.setAntiAlias(true); mPaint.setStrokeWidth(10); } public CustomCircleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // MeasureSpec.get } @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() ; cy =(int) event.getY(); //刷新 invalidate(); // postInvalidate(); break; case MotionEvent.ACTION_UP: System.out.println("event ACTION_UP = " + event.getRawX() + " " + event.getRawY()); break; } return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // int x = getWidth() / 2 ; canvas.drawCircle(cx,cy,200,mPaint); } }
view 图像可鼠标按住移动
最新推荐文章于 2025-04-30 16:14:01 发布