onSwipeTouchListner.java
package com.urrecliner.markupphoto;
import android.content.Context;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import static com.urrecliner.markupphoto.Vars.utils;
public class OnSwipeTouchListener implements View.OnTouchListener {
private GestureDetector gestureDetector;
OnSwipeTouchListener(Context c) {
gestureDetector = new GestureDetector(c, new GestureListener());
}
GestureDetector getGestureDetector(){
return gestureDetector;
}
public boolean onTouch(final View view, final MotionEvent motionEvent) {
return gestureDetector.onTouchEvent(motionEvent);
}
private final class GestureListener extends GestureDetector.SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 200;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
onClick();
return super.onSingleTapUp(e);
}
// @Override
// public boolean onDoubleTap(MotionEvent e) {
//// onDoubleClick(e);
// return super.onDoubleTap(e);
// }
//
// @Override
// public void onLongPress(MotionEvent e) {
// onLongClick();
// super.onLongPress(e);
// }
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
float diffX = e1.getX() - e2.getX();
if (diffX > SWIPE_THRESHOLD)
onSwipeNext();
else if (diffX < -SWIPE_THRESHOLD)
onSwipePrev();
} catch (Exception e) {
utils.log("1",e.toString());
e.printStackTrace();
}
return false;
}
}
public void onSwipePrev() { }
public void onSwipeNext() { }
private void onClick() { }
}
in your java
OnSwipeTouchListener onSwipeTouchListener;
...
onSwipeTouchListener = new OnSwipeTouchListener(this) {
@Override
public void onSwipePrev() {
if (nowPos > 0) {
nowPos--;
buildPhotoScreen();
}
}
@Override
public void onSwipeNext() {
if (nowPos < photos.size()-1) {
nowPos++;
buildPhotoScreen();
}
}
};
...
ViewGroup mBody = findViewById(R.id.markupPlace);
mBody.setOnTouchListener(onSwipeTouchListener);
...
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
onSwipeTouchListener.getGestureDetector().onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
'android source ' 카테고리의 다른 글
Delayed exit application (0) | 2020.01.16 |
---|---|
ask Permission (0) | 2020.01.12 |
get physical screen width dots (0) | 2020.01.03 |
shared preference save, get (0) | 2019.10.10 |
getColor() (0) | 2019.09.30 |