У меня есть действие, в котором я устанавливаю OnTouchListener для View (см. Код ниже). Он должен немного переводить представление по горизонтали, пока не активируется GestureDetector и не сделает что-то.
Код до сих пор очень прост, игнорируя множественные сенсорные события и т. Д. Я включу это позже.
getView().setOnTouchListener(new OnTouchListener() {
private float downPos = 0;
@Override
public boolean onTouch(View vw, MotionEvent event)
{
switch (event.getActionMasked())
{
case MotionEvent.ACTION_DOWN:
downPos = event.getX();
break;
case MotionEvent.ACTION_MOVE:
Log.d("MyActivity", "X: " + event.getX());
vw.setTranslationX(event.getX() - downPos);
break;
case MotionEvent.ACTION_UP:
vw.setTranslationX(0);
break;
}
return detector.onTouchEvent(event);
}
});
У меня проблема в том, что события MotionEvents, которые получает слушатель, колеблются между двумя точками.
D/MyActivity(5098): X: 586.0
D/MyActivity(5098): X: 585.0
D/MyActivity(5098): X: 587.0
D/MyActivity(5098): X: 586.0
D/MyActivity(5098): X: 589.0
D/MyActivity(5098): X: 587.0
D/MyActivity(5098): X: 590.0
D/MyActivity(5098): X: 588.0
D/MyActivity(5098): X: 591.0
D/MyActivity(5098): X: 589.0
D/MyActivity(5098): X: 592.0
Обратите внимание, как значения идут вверх и вниз. Поскольку я использую его для перевода вида, у меня появляется какое-то мерцание.
Я не впервые замечаю это. Я использовал ScaleGestureDetector в ImageView, чтобы масштабировать изображение один раз, когда у меня были те же проблемы.
Кто-нибудь имел такие же проблемы и мог их решить? Или это аппаратный сбой?
Мое устройство - acer A500 (Iconia Tablet)
РЕДАКТИРОВАТЬ: я проверил это на эмуляторе. У меня там тоже есть проблема. Так что это не ошибка устройства, а ошибка в Android SDK или я не правильно понимаю MotionEvents.