티스토리 뷰
GestureDetector에 대해서 알아보도록 한다.
일반적인 onTouch에서 이벤트를 받아서 처리를 하려면 조금 만들어줘야한다.
그러나 이런것들은 만들어져 있다.
interface GestureDetector.OnDoubleTapListener : 두 번 터치했을 경우의 관련 리스너
interface GestureDetector.OnGestureListener : 일반적인 제스처들, 한 번 터치나 스크롤 관련 리스너 인터페이스의 모든 메서드를 반드시 구현해야 한다.
class GestureDetector.SimpleOnGestureListener : 클래스를 확장하여 모든 제스처에 사용할 수 있다. (위의 두개를 모두 포함함)
onDown() : 터치하려고 손을 대기만 해도 호출되는 메서드이며, 모든 제스처의 시작이다.
onSingleTapUp() : 한번 터치 제스처 중에 UP 이벤트가 발생했을 경우, 호출되는 메서드이다.
onSingleTapConfirmed() : 한번 터치 했을 경우, 호출되는 메서드이다.
onDoubleTap() : 두 번 터치를 했을 경우, 호출되는 메서드이다.
onDoubleTapEvent() : 두 번 터치 제스처 중에 DOWN/MOVE/UP 이벤트가 발생했을 경우, 호출되는 메서드이다.
onLongPress() : 길게 눌렀을 경우, 호출되는 메서드이다.
onShowPress() : 터치 화면을 처음 눌렀을 경우, 그러나 손가락을 떼거나 다른곳으로 이동하기 전에 호출되는 메서드이다. 터치가 감지되었음을 시청각적으로 표시하고자 할 때 유용하다.
onScroll() : 손가락으로 화면을 누른 채 손가락을 일정한 속도와 방향으로 움직인 후 떼었을 경우, 호출되는 메서드이다.
onFling() : 손가락으로 화면을 누른 채 가속도를 붙여서 손가락을 움직인 후 떼었을 경우, 호출되는 메서드이다. 이를 던지기(Fling) 또는 튀기기(Flick)라고 부른다. 이 제스처에 대한 일반적인 반응 방식은, 손가락을 뗀 후에도 대상이 일정 기간 동안 계속 움직이게 하는 것이다.
예제.
public class GustureDetectTest extends Activity { private GestureDetector mGestureDetector; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mGestureDetector = new GestureDetector(this, mOnSimpleOnGestureListener); } @Override public boolean onTouchEvent(MotionEvent event) { // 여기에서는 터치 이벤트를 넘겨주어서 받고 난후, 리턴값을 돌려준다. // 일반 뷰에 붙여도 된다. return mGestureDetector.onTouchEvent(event); } private GestureDetector.SimpleOnGestureListener mOnSimpleOnGestureListener = new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public boolean onDown(MotionEvent e) { return false; } @Override public boolean onDoubleTap(MotionEvent e) { return super.onDoubleTap(e); } @Override public boolean onDoubleTapEvent(MotionEvent e) { return super.onDoubleTapEvent(e); } @Override public boolean onSingleTapConfirmed(MotionEvent e) { return super.onSingleTapConfirmed(e); } }; }
'Mobile > Android' 카테고리의 다른 글
[Android]장평, 줄간격 설정 (0) | 2014.09.05 |
---|---|
[Android]NotificationCompat이용하여 유연하게 Noti만들기 (0) | 2014.09.04 |
[Android]ListView,ScrollView 스크롤 끝에 효과 없애기 (2) | 2014.09.04 |
[Android]치수변환 (0) | 2014.09.02 |
[Android]Up Navigation 설정 (0) | 2014.09.01 |
- Total
- Today
- Yesterday
- ios
- git
- php
- Java
- Spring
- docker
- Kotlin
- golang
- Gradle
- tomcat
- centos8
- nodejs
- CentOS
- Codable
- github
- ubuntu
- SWIFT
- Python
- MySQL
- windows10
- Xcode
- Linux
- cocoapods
- android
- war
- go
- enum
- rxswift
- Windows
- intellij
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |