私は Android OS に戻ってきており、キャンバスとペイントを調査することにしました。
ここで、単純なペイント アプリケーションを作成するコードをいくつか見つけました。しかし、私は1つのことについて少し混乱しています。ペイント クラスでは、これを行います。
public boolean onTouch(View view, MotionEvent event) {
// Point holds two integer coordinates
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
// Add the coordinates to the array list
points.add(point);
invalidate();
Log.d(TAG, "point: " + point);
return true;
}
ホバーメッセージによるとinvalidate()
:
これは、UI スレッドから呼び出す必要があります。非 UI スレッドから呼び出すには、postInvalidate() を呼び出します。ビュー全体を無効にします。ビューが表示されている場合、将来のある時点で onDraw(android.graphics.Canvas) が呼び出されます。これは、UI スレッドから呼び出す必要があります。非 UI スレッドから呼び出すには、postInvalidate() を呼び出します。
postInvalidate()
では、Paint クラスは UI ではないため、代わりにこれを呼び出すべきではありinvalidate()
ませんか? 主なアクティビティは UI です。これについて意見を聞きたかっただけです。
PS私は両方を試してみましたが、postInvalidate()
うまくいきます。