Android on set touch listener显示多点触摸

Android on set touch listener显示多点触摸,android,drag-and-drop,onclicklistener,ontouchlistener,Android,Drag And Drop,Onclicklistener,Ontouchlistener,我正在开发一个使用拖放功能的android应用程序。在我的应用程序中,按钮名为buttonOne。有时我想点击按钮,有时我想拖放按钮。因此,我使用setOnTouchListener。当我拖动或双击(或触摸)按钮时,单击次数显示超过次。例如,当我拖动按钮时,我想显示计数1。但它显示了不止一个。有时它会发生在单击下面显示的我的代码时 imageButtonOne.setOnTouchListener(new OnTouchListener() {@Override public boolean o

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

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;
}
});
imagebuttone.setOnTouchListener(新的OnTouchListener(){@Override公共布尔onTouch(视图v,运动事件){
//单击=1;
ClipData data=ClipData.newPlainText(“,”);
View.DragShadowBuilder shadow=新视图.DragShadowBuilder(imageButtonOne);
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.N){
v、 startDragAndDrop(数据,阴影,v,0);
}否则{
v、 startDrag(数据,阴影,v,0);
}
Log.d(“LOGTAG”、“toucted”);
如果(SystemClock.elapsedRealtime()-c<1000){//SystemClock is显示系统时间。
设置位置(位置);
}
c=SystemClock.elapsedRealtime();
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
startX=event.getX();
startY=event.getY();
打破
case MotionEvent.ACTION\u UP:
float endX=event.getX();
float endY=event.getY();
如果(单击(开始、结束、开始、结束)){
Log.d(“锁定视图”,“点击”);
}else{}
打破
}
v、 getParent().RequestDisallowWinterCeptTouchEvent(true);//特定于我的项目
返回false;
}
});
此处
SystemClock.elapsedRealtime()
显示系统用于避免多点触摸响应


但是没有得到正确的结果怎么解决呢?请帮帮我?

我得到了答案。它存在于
SystemClock.elapsedRealtime()-c
的问题中。我已将
c<1000
更改为
c>10


现在问题解决了。

您尝试了什么。我想请使用SetonClickListener我想使用拖放。所以,setonClickListener没有用处。在UI中,您有使用拖放按钮的权利/是的,我有使用拖放按钮的权利。但是我也想用鼠标点击按钮。你是新开发安卓系统的吗?