1

我有一个画布屏幕,我在其中徒手涂鸦。我想做的是,当用户在涂鸦后抬起手指时,ACTION_UP将调用事件。我的要求是知道用户已经完成了他的涂鸦,在他完成涂鸦后我会采取我的行动。

为了在ACTION_UP事件中实现这一点,我正在让一个新线程休眠 3 秒,但我希望当线程处于休眠状态时以及在这 3 秒内,如果用户开始在屏幕上再次涂鸦,那么我想调用ACTION_DOWN事件。

我没有办法做到这一点。代码如下所述。请帮忙 。

  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

我不知道。但是为什么你不能为此设置一个全局布尔标志呢?在线程 sleep 之前,检查是否发生了动作,如果是,则将其设置为 true。然后根据标志的值,您可以编写其他代码。

于 2013-07-29T05:30:25.357 回答