1

フリーハンドで落書きしているキャンバス画面があります。私がやろうとしているのは、ユーザーが何かを落書きした後に指を離すと、ACTION_UPイベントが呼び出されるということです。私の要件は、ユーザーが落書きを行ったことを知ることです。ユーザーが落書きを行った後、私は行動を起こします。

イベントでこれをACTION_UP実現するために、新しいスレッドを 3 秒間スリープさせていますが、スレッドがスリープ状態のときに、その 3 秒間にユーザーが画面上で再び落書きを開始した場合は、ACTION_DOWNevent を呼び出したいと考えています。

これを行う方法がありません。コードは以下に記載されています。助けてください 。

  public boolean onTouchEvent(MotionEvent event) {
            float eventX = event.getX();
            float eventY = event.getY();

            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(eventX, eventY);
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(eventX, eventY);
                break;
            case MotionEvent.ACTION_UP:

     thread = new Thread() {
                    int wait = 0;
                    @Override
                    public void run() {
                        super.run();
                        while (wait < 3000) {
                            try {
                                sleep(100);
                                wait += 100;

                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                        }
                        try {
                            pointerUp();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                    }

                };
                thread.start();
                break;
            default:
                return false;
4

1 に答える 1

0

私はわかりません。しかし、そのためにグローバルブールフラグを設定できないのはなぜですか? スレッドがスリープ状態になる前に、アクションが発生したかどうかを確認し、発生した場合は true に設定します。次に、フラグの値に基づいて、else をコーディングできます。

于 2013-07-29T05:30:25.357 に答える