这是用于检测触摸+绘制自定义视图的基本代码:
public boolean onTouchEvent(MotionEvent event) { //Basic onTouch code for scrolling along the Y axis
super.onTouchEvent(event);
if(event.getActionMasked()==MotionEvent.ACTION_DOWN){
mPrevious = event.getY();
}
if(event.getActionMasked()==MotionEvent.ACTION_MOVE){
float distance = mPrevious - event.getY();
scrollBy(0,Math.round(distance));
mPrevious = event.getY();
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//Basic drawing of a circle at (200,200)
canvas.drawCircle(200f,200f,50f, defaultPaint);
//canvas.setMatrix(new Matrix());
Log.d("CANVAS", "("+canvas.getMatrix().toString()+")");
}
我正在使用自定义视图,正在尝试使用scrollBy
来实现用户滚动功能,但是看来我必须自己创建逻辑。
我仍然想了解此功能的工作原理。当我在日志记录的最后一行打印画布矩阵时,它将正确显示新坐标,并且每次触摸移动都会调用onDraw。
但是,如果我不评论canvas.setMatrix
,那么令人惊讶的是,在功能方面并没有改变。现在唯一的区别是,控制台日志显示画布矩阵始终等于标识mx,即使它已正确滚动也是如此。为什么? scrollBy
如何完全覆盖画布绘图?