Android on set touch listener显示多点触摸
我正在开发一个使用拖放功能的android应用程序。在我的应用程序中,按钮名为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
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中,您有使用拖放按钮的权利/是的,我有使用拖放按钮的权利。但是我也想用鼠标点击按钮。你是新开发安卓系统的吗?