如何检测手指是否已经在按钮上启动新活动

时间:2012-11-26 10:03:46

标签: android events android-layout touch

场景是用户长按活动A 。 lonkclick上的活动A 启动活动B ,而用户不抬起手指。 活动B 应检测到用户仍在触摸屏幕。

我试图通过...来实现它。

活动A

中的

ButtonA.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            startActivityForResult(new Intent(ActivityA.this, ActivityB.class), REQUEST_1);
            return true;
        }
    });
活动B ...

中的

ButtonB.setOnTouchListener(new OnTouchListener() {
        int oldEvent = -1;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (oldEvent != event.getAction()) {
                oldEvent = event.getAction();
                Toast.makeText(ActivityB.this, event.getAction() + "", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
    });
例如,ButtonA和ButtonB位于屏幕上的相同位置。绝对/

ButtonB 启动 ActivityB 后,无事件。 ACTION_DOWN和ACTION_UP都没有。一般来说,我希望在 ButtonB 上收到ACTION_UP: - )

2 个答案:

答案 0 :(得分:2)

如果手指在您开始活动时已经在屏幕上,您将无法获得ACTION_DOWN。你也不会得到ACTION_UP,因为还没有ACTION_DOWN。也许你有自己的推理这样做,但一般来说用户应该可以取消操作,因此按钮应该在点击时做出反应(DOWN然后在同一个对象上UP)。如果动作发生在DOWN,那么用户就无法取消它(即通过将手指移动到对象外面并抬起它)。

答案 1 :(得分:1)

使用FragmentActivity解决任务。