OnTouchEvent检测到点击不能在我的Asus Zenfone上工作

时间:2016-04-01 07:27:01

标签: android click ontouchevent

我使用onTouchEvent方法可以执行拖放事件和单击事件。我在Nexus 7(2012)上测试结果,它工作得很好但是在我的smarphone上有一个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;
    }
});

有人知道我的点击未被触发的原因吗?

编辑:截图

enter image description here

2 个答案:

答案 0 :(得分:0)

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

我对您的手机可能发生的事情不承担任何责任,但这就是我总能解决这些问题的方法

答案 1 :(得分:0)

我终于成功地使我的代码工作了。我刚刚在动作移动中添加了如果检测到点击,如果不是,并且只有在不是我开始拖动的情况下。那就是它。