Расширение ответа Мирека, для случая, когда вы хотите использовать жесты прокрутки в представлении прокрутки. По умолчанию сенсорный приемник для просмотра с прокруткой отключен, поэтому действие прокрутки не выполняется. Чтобы это исправить, вам нужно переопределить метод dispatchTouchEvent
Activity
и вернуть унаследованную версию этого метода после того, как вы закончите со своим собственным слушателем.
Чтобы сделать несколько изменений в коде Мирека:
Я добавляю геттер для gestureDetector
в OnSwipeTouchListener
.
public GestureDetector getGestureDetector(){
return gestureDetector;
}
Объявите OnSwipeTouchListener
внутри Activity как общеклассное поле.
OnSwipeTouchListener onSwipeTouchListener;
Измените код использования соответствующим образом:
onSwipeTouchListener = new OnSwipeTouchListener(MyActivity.this) {
public void onSwipeTop() {
Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show();
}
public void onSwipeRight() {
Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show();
}
public void onSwipeLeft() {
Toast.makeText(MyActivity.this, "left", Toast.LENGTH_SHORT).show();
}
public void onSwipeBottom() {
Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show();
}
});
imageView.setOnTouchListener(onSwipeTouchListener);
И переопределить метод dispatchTouchEvent
внутри Activity
:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
swipeListener.getGestureDetector().onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
Теперь должны работать как прокрутка, так и прокрутка.