Я пытаюсь создать действие с помощью некоторых кнопок, которые воспроизводят звук при нажатии.
и я также хочу, чтобы они были перетаскиваемыми, чтобы вы могли менять порядок кнопок по своему усмотрению.
Я нашел способ сделать это здесь: Как перетащить плавающую кнопку действия на пейджер вида
но проблема в том, что когда вы пытаетесь щелкнуть, это обычно рассматривается как действие перетаскивания, потому что при касании экрана происходит «микро» движение. поэтому ПЕРЕКЛЮЧАТЕЛЬ проходит через случай ACTION_MOVE.
Поэтому я добавил сравнение отметки времени, когда выполняются ACTION_DOWN и ACTION_UP.
и учтите, что если эти два действия произойдут менее чем через 200 миллисекунд, они будут выполнены как щелчок.
это похоже на работу, но, поскольку я действительно очень новичок в Android, я хочу знать, есть ли лучший способ сделать это.
ТНХ
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;