Android - invalidate不会调用onDraw SOMETIMES

时间:2014-01-02 23:35:07

标签: android ondraw

尝试确定为什么总是不会调用onDraw。 我在自定义视图类的onTouch事件中有以下代码。

public boolean onTouch(View view, MotionEvent event) {
 <<do something>><
 switch (eventType) {
        case MotionEvent.ACTION_DOWN: 
           <<do something>>
        case MotionEvent.ACTION_MOVE: 
           <<do something>>
            Log.d(TAG, "calling invalidate"); 
            invalidate();
            break;
 }
}

日志显示以下语句“调用invalidate”,但在此日志语句之后并不总是调用ondraw。这几乎就像批量无效并每X次调用一次onDraw一样。

提前致谢

1 个答案:

答案 0 :(得分:0)

是的,这是invalidate()的作用;它将View的当前状态标记为已过期,并计划调用draw()以在下一个绘图迭代中运行,该迭代将在主要计划的当前事件之后的某个时刻运行线程(例如处理用户交互)已完成。