Home Touch Event
Post
Cancel

Touch Event

터치 이벤트 처리하기

가장 두개의 뷰를 가장 상단에 배치,

스크롤 뷰 안에 텍스트 뷰를 넣어서 가장 위에 있는 뷰를 터치하면 이벤트가

발생하게 처리 해보았다. 밑에 있는 뷰의 이벤트도 처리 하고 싶으면,

View view = findViewById(R.id.view2);로 뷰 객체를 불러와서

불러온 객체에 리스너 등록 처리를 해주면 된다.

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
public class MainActivity extends AppCompatActivity  {
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.textView); //Text 뷰 객체 불러오기
        View view = findViewById(R.id.view);    // View 객체 불러오기
        view.setOnTouchListener(new MyListener());
    }

    class MyListener implements View.OnTouchListener {
        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent){
            // 발생한 이벤트 가져옴
            // 이벤트는 상수 값으로 정의 되어 있음
            int action = motionEvent.getAction();
            // 이벤트가 발생한 좌표 얻어오기
            float curX = motionEvent.getX();
            float curY = motionEvent.getY();

            if (action == MotionEvent.ACTION_DOWN)
                println("손가락 눌림 : " + curX + ", " + curY);
            else if (action == MotionEvent.ACTION_MOVE)
                println("손가락 움직임: " + curX + ", " + curY);
            else if (action == MotionEvent.ACTION_UP)
                println("손가락 뗌 : "+ curX + ", " +  curY);

            return true;
        }

        public void println(String data){
            textView.append(data+"\n");
        }
    }
}

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
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout 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"  
  android:orientation="vertical"  
  tools:context=".MainActivity">  
  
 <View  
  android:id="@+id/view"  
  android:layout_width="wrap_content"  
  android:layout_height="0dp"  
  android:layout_weight="1"  
  android:background="#8BC34A" />  
  
 <View  
  android:id="@+id/view2"  
  android:layout_width="wrap_content"  
  android:layout_height="0dp"  
  android:layout_weight="1"  
  android:background="#FF9800" />  
  
 <ScrollView  
  android:layout_width="match_parent"  
  android:layout_height="0dp"  
  android:layout_weight="1">  
  
 <LinearLayout  
  android:layout_width="match_parent"  
  android:layout_height="wrap_content"  
  android:orientation="vertical">  
  
 <TextView  
  android:id="@+id/textView"  
  android:layout_width="match_parent"  
  android:layout_height="match_parent" />  
 </LinearLayout>  
 </ScrollView>  
</LinearLayout>

MotionEvent.ACTION_DOWN -> 손가락이 눌렸을 때

MotionEvent.ACTION_MOVE -> 손가락이 눌린 상태로 움직일 때

MotionEvent.ACTION_UP -> 손가락이 떼졌을 때

1

This post is licensed under CC BY 4.0 by the author.