안드로이드 제스처 이벤트 (GestureDetector) 예제
화면을 손으로 드래그시 이동 방향에 따라 이벤트가 발생하도록 하는 것이 제스처 이벤트 입니다.
아래 java 파일을 만들고 사용하고자 하는곳에서 불러오면 됩니다.
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() { } } |
필요한 Activity 에서 아래 코드를 이용해 사용 합니다.
View v_swipe = (View) findViewById(R.id.v_swipe); v_swipe.setOnTouchListener(new OnSwipeTouchListener(DetailsActivity.this) { public void onSwipeRight() { // 왼쪽에서 오른쪽으로 제스쳐 사용시 동작할 코드 넣기 } public void onSwipeLeft() { // 오른쪽에서 왼쪽으로 제스쳐 사용시 동작할 코드 넣기 } public void onSwipeTop() { // 아래에서 위쪽으로 제스쳐 사용시 동작할 코드 넣기 } public void onSwipeBottom { // 위에서 아래쪽으로 제스쳐 사용시 동작할 코드 넣기 } }); |
'프로그래밍 > Android (Java)' 카테고리의 다른 글
setImageResource 에 변수를 이용해 적용하기 (0) | 2021.01.20 |
---|---|
안드로이드에서 서버 포트 열려 있는지 확인하기 (포트 체크) (0) | 2021.01.18 |
안드로이드 소프트 키보드 숨기기 (0) | 2021.01.03 |
HttpURLConnection 을 이용해서 http status code 받아 오기 (0) | 2020.12.21 |
안드로이드 진동 기능 사용하기 (0) | 2020.12.18 |