728x90
오늘은 안드로이드 화면에서 터치를 했을때 안드로이드에서 좌표를 어떻게 인식하는지
알아보는 과정을 가지겠습니다. 응용을 하게되면 그림그리기와 같은 앱도 만들 수 있겟죠?
먼저 저희가 다룰 이벤트는 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);
}
}
정확히 어디를 터치하는지 표시해 주는 결과를 확인할 수 있습니다.
'안드로이드 자바' 카테고리의 다른 글
[Java][Android] ScrollView 최상ㆍ하단 감지 (0) | 2021.11.21 |
---|---|
[JAVA][Android] 리사이클러뷰 접기, 펴기 (0) | 2021.11.18 |
[Java][Android] 안드로이드 웹브라우저 화면 구성 (0) | 2021.11.15 |
[JAVA][Android] 비트맵 string으로 변환하기 (0) | 2021.11.14 |
[JAVA][Android] 랜덤숫자 생성하고 공유하는 앱 만들기 (0) | 2021.11.12 |