Другие ответы могут решить вопрос, может быть, они работают хорошо, но я не думаю, что это хорошие решения.
Потому что мы должны иметь дело с событием в одну минуту, чтобы мы могли быть более уверенными в поддержанииили разверните код.
(Кстати, не используйте onFilng()
, если ваш палец медленно двигается по экрану, onFilng()
не будет работать)
Итак, мое решение переписатьGestureDetector :
public class ModifyGestureDetector extends GestureDetector {
MyGestureListener myGestureListener;
public ModifyGestureDetector(Context context, OnGestureListener listener) {
super(context, listener);
init(listener);
}
void init(OnGestureListener listener){
if (listener instanceof MyGestureListener){
myGestureListener = (MyGestureListener) listener;
}
}
//u can write something more complex as long as u need
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_UP
&& myGestureListener != null){
myGestureListener.onUp(ev);
}
return super.onTouchEvent(ev);
}
public interface MyGestureListener{
public void onUp(MotionEvent ev);
}
}
И слушатель:
public class MyGestureListener extends GestureDetector.SimpleOnGestureListener
implements ModifyGestureDetector.MyGestureListener {
@Override
public void onUp(MotionEvent ev) {
//do what u want
}
}
:)