XML找到直接写的类
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="daima.myapplication.MainActivity">
<daima.myapplication.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
_____________________________________________________________________________________________________
自定义类
public class MyView extends View { float x = 50, y = 50; public MyView(Context context) { super(context); } public MyView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //测量 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } //绘制 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(x, y, 50, paint); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: x = event.getX(); y = event.getY(); postInvalidate(); break; case MotionEvent.ACTION_MOVE: x = event.getX(); y = event.getY(); postInvalidate(); break; case MotionEvent.ACTION_UP: x = event.getX(); y = event.getY(); postInvalidate(); break; } return true; } }