본문 바로가기

Programing (프로그래밍)/Android Studio (안드로이드 스튜디오)

[ 안드로이드 스튜디오 ] - 일반 제스처 감지와 처리하기

728x90
반응형

【 안드로이드 스튜디오 】 - 일반 제스처 감지와 처리하기


# 일반 제스처 감지와 처리하기




일반제스처를 감지하는 절차

onFling(), onDown(), onScroll(), onShowPress(), onSingleTapUp(), onLongPress() 콜백 메서드들을 포함하는 GestureDetector.OnGestureListener 인터페이스를 구현하는 클래스를 정의한다.

그러나 더블 탭 제스처를 감지할 필요가 있을 때는 그 클래스에서 GestureDetector.OnDoubleTapListener 인터페이스와 onDoubleTap() 메서드도 함께 구현해야 한다.

액티비티의 onTouchEvent() 콜백 메서드를 구현한다. 이때 그 시점의 MotionEvent 객체를 그 메서드의 인자로 전달한다.


onFilng()  // 수평 또는 수직 방향으로 밀기

onDown() // 누름

onScroll() // 

onShowPress() // 

onSingleTapUp() // 탭(터치)

onLongPress() // 길게 누름

onDoubleTap() // 더블 탭(더블 터치)





@ activity_common_gestures.xml



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.admin.commongestures.CommonGestures">
 
    <TextView
        android:id="@+id/gestureStatusText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 
</android.support.constraint.ConstraintLayout>
 
cs




@ CommonGesture.java



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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.example.admin.commongestures;
 
import android.nfc.Tag;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.TextView;
 
public class CommonGestures extends AppCompatActivity
    implements GestureDetector.OnGestureListener,
               GestureDetector.OnDoubleTapListener {
 
        private TextView gestureText;
        private GestureDetector gDetector;
 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_common_gestures);
 
            gestureText = (TextView)findViewById(R.id.gestureStatusText);
 
            this.gDetector = new GestureDetector(this,this);
            gDetector.setOnDoubleTapListener(this);
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event){
            this.gDetector.onTouchEvent(event);
            // 오버라이딩한 슈퍼 클래스의 메서드를 호출한다.
        Log.i("tag","onTouchEvent");
        return super.onTouchEvent(event);
    }
 
    @Override
    public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
        gestureText.setText("onSingleTapConfirmed");
        Log.i("tag","onSingleTapConfirmed");
        return true;
    }
 
    @Override
    public boolean onDoubleTap(MotionEvent motionEvent) {
        gestureText.setText("onDoubleTap");
        Log.i("tag","onDoubleTap");
        return true;
    }
 
    @Override
    public boolean onDoubleTapEvent(MotionEvent motionEvent) {
        gestureText.setText("onDoubleTapEvent");
        Log.i("tag","onDoubleTapEvent");
        return true;
    }
 
    @Override
    public boolean onDown(MotionEvent motionEvent) {
        gestureText.setText("onDown");
        Log.i("tag","onDown");
        return true;
    }
 
    @Override
    public void onShowPress(MotionEvent motionEvent) {
        gestureText.setText("onShowPress");
        Log.i("tag","onShowPress");
    }
 
    @Override
    public boolean onSingleTapUp(MotionEvent motionEvent) {
        gestureText.setText("onSingleTapUp");
        Log.i("tag","onSingleTapUp");
        return true;
    }
 
    @Override
    public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        gestureText.setText("onScroll");
        Log.i("tag","onScroll");
        return true;
    }
 
    @Override
    public void onLongPress(MotionEvent motionEvent) {
        gestureText.setText("onLongPress");
        Log.i("tag","onLongPress");
    }
 
    @Override
    public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        gestureText.setText("onFling");
        Log.i("tag","onFling");
        return true;
    }
}
cs




 @ Memo

이전시간에 배웠던 Log.i 에 메세지를 남겨두어서 복,붙이 쉽도록 했다.

사실 워낙 순식간에 text가 바뀌어서 읽기 어려웠다. ㅠㅠ





http://insurang.tistory.com


728x90
반응형