Привет, Эврионе!
Я пытаюсь добавить функцию «смахивание» в свое приложение, но не могу этого сделать. У меня есть истории, чтобы пролистать слева направо и наоборот. Я написал подкласс MYGestureListener, который имеет следующую реализацию.
class MyGestureListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.e("Now", "onFling");
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
// checking if current index is the last index
if (ind == items.size() - 1 || ind > items.size() - 1) {
Log.e("Last Index", "Can't move further anymore");
return false;
} else {
ind++;
loadAndShowNextActivity();
}
}
// left to right
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (ind <= 0) {
Log.d("First Index", "Can't move back anymore");
return false;
} else {
ind--;
loadAndShowNextActivity();
}
}
} catch (Exception e) {
System.out.println("Exception occured while flinging");
e.printStackTrace();
}
return false;
}
}
Тогда я переопределил функцию onTouchEvent () в основном классе. который реализован следующим образом:
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.e("Now","onTouchEvent");
if (gestureDetector.onTouchEvent(event))
return true;
else
return false;
}
, а затем вызывать его экземпляр в onCreate основного класса следующим образом:
gestureDetector = new GestureDetector(new MyGestureListener());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
Это не работает, пожалуйста, предложите и определите, где я ошибаюсь. Заранее спасибо ..: -)