마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레이아웃 좌표 구하기...

0 추천
안녕하세요..수직 리니어 레이아웃 안에

수평 리니아웃 2개를 넣은 상태에서 수직 리니어이 좌표값을 알고하잡니다.

getX, getY 는 상대좌표를 가져오는 거같은데.. 궁금증이 있습니다.

1 . getLocationOnScreen과 getlocationInWindow는 정확히 무엇이 다른것인가요.?

 

2. getLocationOnScrren으로 X Y 좌표를 가져오면.. X좌표는 맞는데 Y좌표는 값이 다른거 같습니다.. 어플 상에서 보면 분명 화면 맨 위에 딱 붙어 있는데

Y값이 자꾸 75로 나오네요.. 어떻게 해결해야할까요?

 

3. 레이아웃이 많이 중첩된 액티비티에서 정확히 제가 알고자 하는 View의 절대좌표를 알고 싶다면 위의 메소드들을 이용하는것이 맞는건지요?

 

도움 감사드립니다.
치솟음 (3,710 포인트) 님이 2015년 4월 30일 질문

1개의 답변

0 추천
 
채택된 답변
답변의 근거 : http://stackoverflow.com/questions/17672891/getlocationonscreen-vs-getlocationinwindow

1. 일반적인 화면을 꽉채우고(FillParent or MatchParent) 있는 Activity 형태에서는 위 두 메소드가 같은 결과를 리턴하겠지만 Dialog와 같이 window의 offset이 있는 형태에서는 다른값으로 리턴 될 것입니다

2. y좌표는 상단 휴대폰의 status bar를 제외한 부분부터 시작되므로 75가 맞습니다.

3. 저도 실제 프로젝트에 위와 관련된 내용을 검토 및 적용해 본적은 없어서 확답은 드리기 힘듭니다만 위 메소드를 이용해도 무방할 것으로 예상됩니다.
Gradler (109,780 포인트) 님이 2015년 4월 30일 답변
치솟음님이 2015년 6월 26일 채택됨
친절한 설명 감사합니다~
그런데 레이아웃이 화면 맨 위에 꽉차게 나오는데
Y좌표가 75로 찍히면..제가 그냥 로직에 -75 계산을 넣어서 하면 되는걸까요?
status bar의 높이가 기기마다 다를 수 있다 하여 높이 구하는 별도의 로직을 추가해서 해결했습니다~
...