MainActivity 中的代码
publicclassMainActivityextendsActivity {float x1,y1;
private DrawView drawView ;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawView = (DrawView) findViewById(R.id.dv_circle);
}
@OverridepublicbooleanonTouchEvent(MotionEvent event) {
x1 = event.getX(0);
y1 = event.getY(0);
drawView.setX1(x1);
drawView.setY1(y1);
drawView.invalidate();
returnsuper.onTouchEvent(event);
}
}
在这里我们重点关注onTouchEvent方法,首先得到屏幕上第一个触摸点的坐标,
将这个设置为圆心,drawView.invalidate();这个方法一定要调用,
如果不调用你会发现点不会随着手指移动。
这个方法源码的注释为:
* Invalidate the whole view. If the view is visible,
* {@link #onDraw(android.graphics.Canvas)} will be called at some point in
* the future.
* <p>
* This must be called from a UI thread. To call from a non-UI thread, call
* {@link #postInvalidate()}.
当view调用这个方法,并且这个view是visible时,那么这个方法就会使view无效。并且onDraw()方法
会重新调用。