Я работаю над приложением Audio Recording.Это работает так, что когда пользователь нажимает и перемещает кнопку записи, кнопка перемещается вместе с пальцем.Я создал границу, и когда палец пересекает эту границу, я хочу, чтобы кнопка выполняла анимацию hide()
и возвращалась в исходное положение.
Весь процесс работает нормально, если происходит событие MotionEvent.ACTION_UP
или MotionEvent.ACTION_CANCEL
, но операция hide()
не выполняется, даже если касание пересекает границу.Кнопка воспроизводит движение вперед-назад, когда оно находится за пределами границы.Событие касания все еще вызывается, даже если я установил visibility
вида на false
.
Я также получаю вывод в logcat (Log.e("MSG","boundary crossed");
).
Это код:
int recordButtonStartX;
microPhoneListner=new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
recordButtonStartX = (int) event.getX();
this.floatingRecordButton.display(event.getX());
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
this.floatingRecordButton.hide(event.getX());
break;
case MotionEvent.ACTION_MOVE:
int tempX = (int) event.getX();
if ((recordButtonStartX - tempX) > 200) {
Log.e("MSG","boundary crossed");
this.floatingRecordButton.hide(event.getX());
}
else
{
this.floatingRecordButton.moveTo(event.getX());
}
break;
}
recordMsgButton.setOnTouchListener(microPhoneListner);