본문 바로가기
안드로이드 자바

[Java][Android] 터치 좌표 출력하기

by teamnova 2021. 11. 17.

오늘은 안드로이드 화면에서 터치를 했을때  안드로이드에서 좌표를 어떻게 인식하는지

 

알아보는 과정을 가지겠습니다. 응용을 하게되면 그림그리기와 같은 앱도 만들 수 있겟죠? 

 

먼저 저희가 다룰 이벤트는 Touch 이벤트 입니다. 

 

저희가 터치를 하고 드래그를 하면서 움직일때 모든 동작들을 인식하게 될 텐데요 먼저 화면을 그려보죠.

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="2">

    <!--제스쳐로 입력할때는 View를 사용한다-->
    <View
        android:id="@+id/view1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#03A9F4" />

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <!--무슨 제스쳐를 했는지 설명하기 위한 TextView-->
        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFFFFFFF" />
    </ScrollView>
</LinearLayout>

 

윗 부분은 저희가 터치를 할 영역이고

 

아래 영역은 터치한 영역의 좌푯값을 출력해줄 영역입니다.

 

보기 쉽게 간단하게 구분해 주는게 좋겠죠?

 

MainActivity.java

import androidx.appcompat.app.AppCompatActivity;

import android.gesture.GestureOverlayView;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    //객체 선언
    View view1, view2;
    ScrollView scrollView1;
    TextView textView1;
    GestureDetector detector; //무슨 제스쳐를 했는지 감지

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

        //객체 초기화
        view1 = findViewById(R.id.view1);
        scrollView1 = findViewById(R.id.scrollView1);
        textView1 = findViewById(R.id.textView1);

        //터치를 했을때 작동하는 메서드
        view1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                float curX = event.getX();  //눌린 곳의 X좌표
                float curY = event.getY();  //눌린 곳의 Y좌표

                if(action == event.ACTION_DOWN) {   //처음 눌렸을 때
                    printString("손가락 눌림 : " + curX + ", " + curY);
                } else if(action == event.ACTION_MOVE) {    //누르고 움직였을 때
                    printString("손가락 움직임 : " + curX + ", " + curY);
                } else if(action == event.ACTION_UP) {    //누른걸 뗐을 때
                    printString("손가락 뗌 : " + curX + ", " + curY);
                }
                return true;
            }
        });
    }

    private void printString(String s) {
        //좌표 출력
        textView1.append(s + "\n"); //한 줄씩 추가

        //자동으로 마지막 줄로 스크롤 내림
        scrollView1.fullScroll(View.FOCUS_DOWN);
    }
}

 

 

정확히 어디를 터치하는지 표시해 주는 결과를 확인할 수 있습니다.