与画布onDraw相比,scrollBy有多少优先级?

时间:2018-10-13 15:26:05

标签: android canvas

这是用于检测触摸+绘制自定义视图的基本代码:

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如何完全覆盖画布绘图?

0 个答案:

没有答案