【问题标题】:Android on set touch listener shows multi touchAndroid on set touch listener 显示多点触控
【发布时间】:2017-02-14 13:19:42
【问题描述】:

我正在使用拖放功能开发一个 android 应用程序。在我的应用程序中,按钮名称为buttonOne。有时我想单击按钮,有时我想拖放按钮。所以,我使用setOnTouchListener。当我拖动或双击(或触摸)按钮单击计数显示多次。例如,当我拖动按钮时,我想显示计数。但它显示的不止一个。有时它会发生在单击下面显示的我的代码时。

imageButtonOne.setOnTouchListener(new OnTouchListener() {@Override public boolean onTouch(View v, MotionEvent event) {
//clicked =1; 
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadow = new View.DragShadowBuilder(imageButtonOne);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    v.startDragAndDrop(data, shadow, v, 0);
} else {
    v.startDrag(data, shadow, v, 0);
}
Log.d("LOGTAG", "Touched");
if(SystemClock.elapsedRealtime() - c < 1000) { // SystemClock is shows system time.

    setPosition(position);
}
c=SystemClock.elapsedRealtime();
switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    startX = event.getX();
    startY = event.getY();
    break;
    case MotionEvent.ACTION_UP:
    float endX = event.getX();
    float endY = event.getY();
    if (isAClick(startX, endX, startY, endY)) {
        Log.d("LockView", "clicked");
    } else {}
    break;
}
v.getParent().requestDisallowInterceptTouchEvent(true); //specific to my project
return false;
}
});

这里SystemClock.elapsedRealtime() 表示系统用于避免多点触摸响应。

但没有得到正确的结果如何解决?请帮帮我?

【问题讨论】:

  • 你尝试过的。我想请使用 setonClickListener
  • 我想使用拖放。所以,setonClickListener 没用。
  • 在 UI 中,您可以使用右侧的拖放按钮 /
  • 是的,我使用了拖放按钮。但我也想习惯点击按钮。
  • 你是安卓开发新手?

标签: android drag-and-drop onclicklistener ontouchlistener


【解决方案1】:

我得到了答案。这是SystemClock.elapsedRealtime() - c的问题。我已将c &lt; 1000 更改为c &gt; 10

现在问题解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多