본문 바로가기

~2023

[ANDROID] java 파일에서 터치 이벤트 발생시켜 현재 터치 위치 표시하기

728x90
반응형

<실행 예시>

 

 


<풀이>

 

MyView.java(이하 커스텀 뷰)를 만들어 액티비티 화면으로 설정해 실습을 해봤습니다. 커스텀 뷰에서 터치 이벤트가 발생했을 때 (x, y)를 읽어와 안내하는 문자열을 출력했습니다.

커스텀 뷰 방법으로 했을 때 두 가지 주의해야 할 점이 있습니다. xml에서 class 속성을 필수로 추가해줘야 합니다.

ex) class="com.example.${PROJECT_PATH}.${CLASS_NAME}"

위 속성을 추가해준 후에 커스텀 뷰의 모든 생성자에서 부모 생성자를 호출해주면 됩니다.

ex) super(인자1, 인자2, ..)

여기까지 따라오셨으면 필수 설정은 끝났으니 커스텀 뷰에서 멤버로 Paint 객체를 만들어 TextSize를 정해주는 등 꾸미기만 하면 됩니다.

onDraw() 메소드는 단순히 화면에 안내 문자열을 쏴주는 메소드이며, onTouchEvent() 메소드는 터치 위치를 int값으로 전송합니다.

원래 getX() || getY()는 Float형을 반환하기 때문에 Int형으로 형변환해줍니다.

위치 값을 받은 후에 invalidate() 메소드를 통해 화면을 갱신해줍니다.

그러면 어느 화면을 터치하든 터치한 지점의 좌표 안내 문자열이 바로바로 갱신됩니다.

 


<코드>

mPosX, mPosY => (x, y) 좌표


activity_main.xml
MainActivity.java
MyView.java

 

 

 

 

728x90
반응형