728x90
반응형
질문 : Android : 오른쪽에서 왼쪽으로 스 와이프 동작을 처리하는 방법
사용자가 휴대폰 화면에서 오른쪽에서 왼쪽으로 스 와이프 할 때 내 앱이 인식하도록하고 싶습니다.
어떻게하나요?
답변
OnSwipeTouchListener.java :
import android.content.Context;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public class OnSwipeTouchListener implements OnTouchListener {
private final GestureDetector gestureDetector;
public OnSwipeTouchListener (Context ctx){
gestureDetector = new GestureDetector(ctx, new GestureListener());
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
result = true;
}
}
else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
result = true;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
public void onSwipeRight() {
}
public void onSwipeLeft() {
}
public void onSwipeTop() {
}
public void onSwipeBottom() {
}
}
용법:
imageView.setOnTouchListener(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();
}
});
출처 : https://stackoverflow.com/questions/4139288/android-how-to-handle-right-to-left-swipe-gestures
728x90
반응형
'프로그래밍 언어 > Android' 카테고리의 다른 글
오류 : The application may be doing too much work on its main thread (0) | 2021.08.11 |
---|---|
Android 6.0 Marshmallow (API 23)에서 getColor (int id) 지원 중단됨 (0) | 2021.08.10 |
Android에서 SharedPreferences를 사용하여 값을 저장, 가져 오기 및 편집하는 방법 (0) | 2021.08.06 |
Android 기기 고유 ID에 접근 하는 방법 (0) | 2021.08.06 |
Android 웹 서비스 및 네트워킹 라이브러리 비교 : OKHTTP, Retrofit 및 Volley (0) | 2021.08.06 |