2016-04-01 50 views
0

我使用onTouchEvent方法能够有一个拖动&拖放事件和一个点击事件。我测试我的Nexus 7(2012)的结果,它的工作真的很好,但在我的smarphone了一台华硕Zenfone,这不是我不明白为什么,这里是我的代码:OnTouchEvent检测点击不工作我的华硕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

回答

0

我终于成功使我的工作。如果检测到点击,我只是在动作移动中添加,如果不是,并且只有它不是,我才开始拖动。而已。

0

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

我承担可能发生到您的手机没有什么责任,但我这是怎么总是解决这些问题

+0

感谢您的建议,但我已经知道这个选项。界限很棒。正如我所说,没有问题,知道我只是有一个问题,我的智能手机,我不知道为什么,它的工作在模拟器和我的Nexus,所以我无法弄清楚为什么... – zed13

+0

我认为,正在覆盖可触摸区域 – 2D3D

+0

我用截图编辑了我的问题,没有什么... – zed13