在Thread之间调用MotionEvent ACTION_DOWN是睡着了

时间:2013-07-29 05:24:47

标签: android multithreading motionevent

我有一个画布画面,我用自由的手写作。我想要做的是当用户在涂鸦之后抬起他的手指ACTION_UP事件将被调用。 我的要求是要知道用户已经完成了他的涂鸦,在他完成涂鸦后我会采取行动。

为了在ACTION_UP事件中实现这一点,我正在创建一个新的线程来休眠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;

1 个答案:

答案 0 :(得分:0)

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