안드로이드 앱을 개발하다 보면 touch, back key 등 말고도 두번 터치(정확한 명칭은 함수상 이름으로 보면 double tap 인데 사실 함수명 보기 전에는 더블 클릭, 더블 터치등으로 검색했었다.) 뿐만 아니라 fling (슬라이드)등이 있다.
이 추가적인 동작들은 일반적인 event 함수 외에 GestureDetector Class를 통해 인지해 낼 수 있다.
GestureDetector
Detects various gestures and events using the supplied MotionEvents. The GestureDetector.OnGestureListener callback will notify users when a particular motion event has occurred. This class should only be used with MotionEvents reported via touch (don't use for trackball events).
[출처 : developer.android.com]
위의 설명과 같이 onGestureListener를 통해 특정 motion을 인지할 수 있다.
GestureDetector.OnContextClickListener | The listener that is used to notify when a context click occurs. | |
GestureDetector.OnDoubleTapListener | The listener that is used to notify when a double-tap or a confirmed single-tap occur. | |
GestureDetector.OnGestureListener | The listener that is used to notify when gestures occur. | |
GestureDetector.SimpleOnGestureListener | A convenience class to extend when you only want to listen for a subset of all the gestures. |
위중에서 GestureDetector.SimpleOnGestureListener를 통해 구현하는 코드는 다음과 같다.
public class TestActivity extends AppCompatActivity {
private GestureDetectorCompat mDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final String TAG = "Gesture";
@Override
public boolean onDown(MotionEvent event) {
Log.d(TAG,"onDown: " + event.toString());
return true;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(TAG, "onFling: " + event1.toString()+event2.toString());
return true;
}
@Override
public boolean onDoubleTap(MotionEvent event) {
Log.d(TAG, "onDoubleTap: " + event.toString());
return true;
}
}
}
위와 같이 event 함수에 의해 각 motion을 구분해낼 수 있고, 각 동작에 대해 원하는 루틴을 구현하면 된다.
'Android' 카테고리의 다른 글
Android - Widget (위젯) 기본 생성 (0) | 2016.01.27 |
---|---|
Android - 이미지 저장 및 변경 on Project. (0) | 2016.01.24 |
Android - Material Design of Google. (0) | 2016.01.24 |
Android - Back key 무시 (0) | 2016.01.20 |
Android - TextView 그리고 EditText View 전환 (0) | 2016.01.19 |
Android - ListView 갱신 with CursorAdapter. (0) | 2016.01.18 |
Android - Activity 화면 전환 효과 (0) | 2016.01.18 |
Android - Application Class (0) | 2016.01.18 |