OnTouchEvent 检测点击在我的华硕 Zenfone 上不起作用

OnTouchEvent detect click not working on my Asus Zenfone

我使用 onTouchEvent 方法来实现拖放事件和点击事件。我在我的 Nexus 7 (2012) 上测试了结果,它工作得非常好,但在我的智能手机 Asus Zenfone 上,它不是,我不明白为什么,这是我的代码:

button.setOnTouchListener(new View.OnTouchListener() {
    private float startX, startY;
    private long startClickTime;

    @Override
    public boolean onTouch(final View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                startX = event.getX();
                startY = event.getY();
                startClickTime = Calendar.getInstance().getTimeInMillis();
                break;

            case MotionEvent.ACTION_MOVE:
                if (v instanceof Button) {
                    Button button = ((Button) v);
                    if (button.getText().length() == 0) return true;

                    ClipData clipData = ClipData.newPlainText("", "");
                    DragShadowBuilder shadowBuilder = new DragShadowBuilder(v, false, scale);
                    v.startDrag(clipData, shadowBuilder, v, 0);

                    DataHolder.getInstance().setCurrentText(button.getText().toString());
                    button.setText("");
                }
                return true;

            case MotionEvent.ACTION_UP:
                float endX = event.getX();
                float endY = event.getY();
                long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;

                if (isAClick(startX, endX, startY, endY) && clickDuration < CLICK_DURATION) {
                    v.performClick();
                }
                return true;
        }
        return false;
    }
});

有人看到我的点击没有被触发的原因了吗?

编辑:截图

这是我的建议 - 转到您的 phone 设置,有一个显示布局边界的选项,您可以将其设置为打开和关闭 - 当此选项打开时,您可以看到您点击的位置。

我对您的 phone 可能发生的事情不承担任何责任,但我总是这样解决这些问题

我终于成功地让我的代码工作了。如果检测到点击,我只是在 Action Move 中添加,如果没有,并且只有当没有点击时,我才开始拖动。就是这样。