1. 뷰를 상속할 때 키 이벤트 처리를 위한 메소드 재정의


boolean onKeyDown (int keyCode, KeyEvent event)

boolean onKey (View v, int keyCode, KeyEvent event)


2. 키를 눌렀을 때 전달되는 대표적인 키값


- KEYCODE_DPAD_LEFT: 왼쪽 화살표

- KEYCODE_DPAD_RIGHT: 오른쪽 화살표

- KEYCODE_DPAD_UP: 위쪽 화살표

- KEYCODE_DPAD_DOWN: 아래쪽 화살표

- KEYCODE_DPAD_CENTER: [중앙] 버튼

- KEYCODE_CALL: [통화] 버튼

- KEYCODE_ENDCALL: [통화 종료] 버튼

- KEYCODE_HOME: [홈] 버튼

- KEYCODE_BACK: [뒤로 가기] 버튼

- KEYCODE_VOLUMN_UP: [소리 크기 증가] 버튼

- KEYCODE_VOLUMN_DOWN: [소리 크기 감소] 버튼

- KEYCODE_0~9 : 숫자 0부터 9까지의 키값

- KEYCODE_A~Z : 알파벳 A부터 Z까지의 키값



3. Key Event 결과 화면




4. MainActivity.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
package com.tistory.qlyh8.pracitice;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            Toast.makeText(this"BACK 버튼 눌림", Toast.LENGTH_LONG).show();
            return true;
        }
        return false;
    }
}
 
cs





출처: https://www.edwith.org/boostcourse-android/lecture/17051/

'Android' 카테고리의 다른 글

Snackbar (스낵바)  (0) 2018.04.28
Toast (토스트)  (0) 2018.04.28
Event (이벤트) - 터치와 제스처 이벤트  (0) 2018.04.28
Event (이벤트)  (0) 2018.04.28
ScrollView (스크롤뷰)  (0) 2018.04.28

1.Touch Event & Gesture Event 결과 화면


   



2. MainActivity.java

MotionEvent 객체에는 터치된 곳의 좌표와 함께 터치된 상태가 전달된다.

손가락이 눌렸는지, 눌린 상태에서 움직였는지, 아니면 손가락이 떼어졌는지를 구분할 수 있는 정보를 받을 수 있는데 getAction 메소드를 이용해 확인할 수 있다.


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
package com.tistory.qlyh8.pracitice;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
    TextView textView;
    View view1, view2;
    GestureDetector detector;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textView = findViewById(R.id.textview);
        view1 = findViewById(R.id.view1);
        view2 = findViewById(R.id.view2);
 
        view1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
 
                if (action == MotionEvent.ACTION_DOWN) {
                    println("손가락 눌림.");
                } else if (action == MotionEvent.ACTION_MOVE) {
                    println("손가락 움직임.");
                } else if (action == MotionEvent.ACTION_UP) {
                    println("손가락 뗌.");
                }
                return true;
            }
        });
 
        view2.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                detector.onTouchEvent(event);
                return true;
            }
        });
 
        detector = new GestureDetector(thisnew GestureDetector.OnGestureListener() {
            @Override
            public boolean onDown(MotionEvent e) {
                println("onDown() 호출됨.");
                return true;
            }
 
            @Override
            public void onShowPress(MotionEvent e) {
                println("onShowPress() 호출됨.");
            }
 
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                println("onSingleTapUp() 호출됨.");
                return true;
            }
 
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                println("onScroll() 호출됨." + distanceX + ", " + distanceY);
                return true;
            }
 
            @Override
            public void onLongPress(MotionEvent e) {
                println("onLongPress() 호출됨.");
            }
 
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                println("onFling() 호출됨." + velocityX + ", " + velocityY);
                return true;
            }
        });
    }
 
    public void println(String data){
        textView.append(data + "\n");
    }
}
 
cs


4. activity_main.xml

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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.tistory.qlyh8.pracitice.MainActivity"
    android:orientation="vertical">
 
    <View
        android:id="@+id/view1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#e76a6a"/>
 
    <View
        android:id="@+id/view2"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#ade76a"/>
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
 
        <TextView
            android:id="@+id/textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </ScrollView>
</LinearLayout>
 
cs





출처: https://www.edwith.org/boostcourse-android/lecture/17051/

'Android' 카테고리의 다른 글

Toast (토스트)  (0) 2018.04.28
Event (이벤트) - 키 이벤트  (0) 2018.04.28
Event (이벤트)  (0) 2018.04.28
ScrollView (스크롤뷰)  (0) 2018.04.28
Table Layout (테이블 레이아웃)  (0) 2018.04.28

1. 대표적인 이벤트


- 터치 이벤트 : 화면을 손가락으로 누를 때 발생하는 이벤트

- 키 이벤트 : 키패드나 하드웨어 버튼을 누를 때 발생하는 이벤트

- 제스처 이벤트 : 터치 이벤트 중에서 일정 패턴을 만들어 내는 이벤트

- 포커스 : 뷰마다 순서대로 주어지는 포커스

- 화면 방향 변경 : 화면의 방향이 가로/세로로 바뀜에 따라 발생하는 이벤트



2. 제스처를 통해 처리할 수 있는 이벤트


- onDown(): 화면이 눌렸을 경우

- onShowPress(): 화면이 눌렸다 떼어지는 경우

- onSingleTapUp(): 화면이 한 손가락으로 눌렸다 떼어지는 경우

- onSingleTapUpConfirmed(): 화면이 한 손가락으로 눌려지는 경우

- onDoubleTap(): 화면이 두 손가락을 눌려지는 경우

- onDoubleTapEvent(): 화면이 두 손가락으로 눌려진 상태에서 떼거나 이동하는 등 세부적인 액션을 취하는 경우

- onScroll(): 화면이 눌린 채 일정한 속도와 방향으로 움직였다 떼는 경우

- onFling(): 화면이 눌린 채 가속도를 붙여 손가락을 움직였다 떼는 경우

- onLongPress(): 화면을 손가락으로 오래 누르는 경우





출처: https://www.edwith.org/boostcourse-android/lecture/17051/

+ Recent posts