안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드 어플 개발을 위해 이것저것 테스트 해보고 있는데요
HorizontalScrollView 를 이용해서 수치를 입력받기위해 좌표값을 읽어올려고 합니다.
스크롤뷰안에 리니어레이아웃을 배치하였고, 그 안에 이미지뷰를 배치 했습니다.
이 과정에서 리니어레이아웃의 getLeft(), 스크롤뷰의 getScrollX() 를 이용해서
리니어레이아웃이 얼마나 스크롤되었는지 읽어오려고 하는데
문제는 드래그를 강하게(?) 즉 드래그를 쭉~ 밀면 스크롤이 드래그가 끝나도 이동을 계속 합니다.
이때 스크롤이 완전히 끝나고 멈추었을때를 알아야 그때의 화면상의 좌표를 읽어와서 값을 계산해야하는데
다시한번 터치 이벤트가 발생하지 않으면 처음 드래그가 끝났을때, 즉 손으로 드래그를 하고 손을 때었을때
값이 남아있더라구요
요점은 터치로 드래그가 끝난후, 터치가 종료된 시점이 아니라 스크롤이 멈추었을때 바로
getLeft() 나 getScrollX() 등을 활용해서 스크롤뷰 안에 있는 리니어레이아웃의 좌표를 알고 싶습니다.
고수님들의 도움이 필요합니다~
도와주세요~
(자답)
이것저것 테스트 끝에 주먹구구식으로
timer를 달아서 실시간으로 ScrollView.getScrollX()를 호출하여 그 값을 이용하는 걸로 해결 했습니다.
timer를 쓰면 특정한 이벤트가 없어도 runnable로 계속 update 되기 때문에 터치 이벤트가 종료되도 체크를 계속 하네요
다만 문제는 스크롤 이동이 아니라도 타이머가 실행중이라 리소스 낭비되는 단점이 있습니다.