我正在尝试创建一个带有一些可播放onClick声音的按钮的活动。 并且我还希望它们是可拖动的,因此您可以根据需要重新排列按钮。
我在这里找到了一种方法:How to drag a floating action button over a view pager
但是问题在于,当您尝试单击时,通常将其视为拖动动作,因为当您触摸屏幕时,会出现“微”移动。因此SWITCH会处理ACTION_MOVE情况。
因此,我在执行ACTION_DOWN和ACTION_UP时添加了时间戳比较。 并考虑到,如果这两个动作发生的时间少于200milisec,则只需单击即可执行。
它似乎可以工作,但是由于我真的是Android的新手,所以我想知道是否有更好的方法来实现它。
thx
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
startDrag = System.currentTimeMillis();
dX = v.getX() - event.getRawX();
dY = v.getY() - event.getRawY();
lastAction = MotionEvent.ACTION_DOWN;
break;
case MotionEvent.ACTION_MOVE:
v.setY(event.getRawY() + dY);
v.setX(event.getRawX() + dX);
stopDrag = System.currentTimeMillis();
stopDrag = stopDrag-startDrag;
if(stopDrag<200){
lastAction = MotionEvent.ACTION_DOWN;
}else{
lastAction = MotionEvent.ACTION_MOVE;}
break;
case MotionEvent.ACTION_UP:
if (lastAction == MotionEvent.ACTION_DOWN) {
if (mp.isPlaying()) {
mp.stop();
mp.reset();
playMp3((String) v.getContentDescription());
}else playMp3((String) v.getContentDescription());
}
break;
default:
return false;
}
return true;