이 블로그 검색

2018년 7월 26일 목요일

[안드로이드 스튜디오 작업] 미는 방향 알아보기(슬라이드 방향?)

처음 안드로이드 스튜디오를 접하고 바로 개발에 착수했다.
모르는것도 너무 많고 알아야만 하는것도 너무 많다.

그 중 touch 이벤트에 대해서는 거의 알아야만 한다고 생각하는데 스마트폰을 사용하면서
특히 어플리케이션을 실행하면서 화면을 터치하지 않고 무엇을 할 수 있을까

더군다나 요즘은 베젤리스라서 휴대폰 앞 면에는 홈버튼도 없고 스크린만 있다.

나는 터치 이벤트에 대해서 구글링을 열심히 했는데 이건 학교에서
자바를 배우면서도 많이들 배우는 기능이라 쉽게 익힌것같다.
대부분 자바책의 앞부분 GUI는 제외하고 배우는듯? 우리 학과는 이상하게 컴퓨터관련 학과도 아닌데 책을 다 배웠다...

근데 내가 구현하고자 하는 것은 어느 방향으로 터치를 진행했는지.

아래에서 위로 밀었는지 위에서 아래로 인지 오른쪽에서 왼쪽인지 왼쪽에서 오른쪽인지를
알아야한다.

그래서 또 열심히 구글링했다.

원하고자 하는 자료는 못찾았지만 알게된건 화면을 터치한 좌표, 터치를 종료 좌표를
알아낼 수 있다는 것이다. 물론 모두 객체내에 변수로 저장되어있다.
우리는 이것을 꺼내서 사용하기만 하면된다.

우선 실행을 해볼 뷰가 필요하다. 나는 텍스트뷰를 전체적으로 크게 키워놓았기때문에
이 위에서 작업을 진행하려고 한다.
그리고 시작을 진행하는 좌표(손가락을 화면에 처음 터치한 좌표) 를 알기위해
sx와 sy를 선언했다. 그리고 얼마나 밀었는지(슬라이드 했는지?)는 MOVE_HAND라는 변수로 총 350픽셀로 설정했다.

나는 이렇게 진행했다.

터치좌표(sx,sy) -> 슬라이드 -> 터치 종료 좌표(finx,finy) -> 거리측정 (finx-sx or finy-sy)
-> finx-sx가 finy-sy보다 크다면 왼쪽오른쪽임 아니면 위아래 -> finx-sx가 MOVE_HAND기준으로 양수만큼이면 오른쪽에서 왼쪽 아니면 왼쪽에서 오른쪽.

이제 구현을 해보자.
터치 좌표는 OnTouch 함수의 매개변수인 (MotionEvent event)
가 필요하다.
MotionEvent 안에 여러가지가 있는데

그중 Action_DOWN은 터치를 한 순간이고
Action_UP은 터치를 종료하는 순간이다.

이때마다의 event.getRawX()가 바로 터치를 시작하고 종료하는 x좌표이다.
그럼
얼마나 밀었는지는?
event.getRawX() - sx(<-Action_DOWN때의 좌표를 저장) 를 보면된다.
위아래인지 왼쪽오른쪽인지는?
event.getRawX() - sx 가 큰지 event.getRawY()-sy가 큰지.
그럼 방향은?
위에서 구한 차이가 +MOVE_HAND 인지 -MOVE_HAND인지.

이제 끝났다.
여기까지 어느 방향으로 밀었느지이다.
간단하게 소스를 첨부했다.




댓글 없음:

댓글 쓰기

[백준 16236] 아기 상어

[ 백준 16236 : 아기 상어 ] 2018 삼성전자 sw직무 하반기 기출문제입니다. 역대 삼성전자 기출문제가 그렇듯 역시나 BFS,DFS,완탐,DP,단순구현 입니다. 저는 문제를 단순히 BFS로 풀어갔습니다. 조건만 잘 지킨다면 한번에 ...