2013-05-17 4 views
1

현재 앱의 절반 (화면 절반)이 그림이고 나머지 절반 아래쪽 절반)은 격자보기입니다. 이제 격자보기의 타일 중 하나를 클릭하면 event.getY()를 사용하여이 클릭의 상대 좌표 y 좌표를 얻으려고합니다. 안드로이드 2.3.3에서 나는 88을 얻었고, 나를 위해 약간의 계산을 위해 나중에이 값을 사용해야한다. 하지만 안드로이드 4.0에서 그것은 터치 이벤트의 절대적인 좌표처럼 내게 보이는 576 정도의 가치를 제공합니다 ...안드로이드 event.getY()는 api 10과 api 16에서 다른 값을 반환합니다.

누구나이 두 버전 간의 차이점을 설명 할 수 있습니까? 그리고 안드로이드 4.0에서도 상대 가치를 얻기위한 해결책이 있습니까?

답변

0

어떻게 테스트하나요? 내 4.2는 항상 내게보기와 관련하여 좌표를 제공합니다 ...

두 장치가 서로 다른 해상도를 가지고 있기 때문에 가능성이 높습니다. 2.3.3이 오래 될 가능성이 있기 때문에 해상도가 낮은 화면이있을 가능성이 큽니다. 두 개의 동일한 가상 장치에서 테스트 해보십시오 (유일한 차이점은 Android의 버전 임). 당신은 또한 격렬하게 다른 해상도로 두 2.3.3 장치에서 테스트를 시도 할 수 있습니다.

연습을하기 전에 항상 좌표를 정규화하려고합니다 (예 : event.getY()/view.getHeight()). 이렇게하면 해상도에 대해 걱정할 필요가 없습니다.

편집 : 당신이 절대적으로 (나는 ... 어쨌든이 경우 이유를 모르겠지만) 상대 좌표를 얻을 수없는 경우

, 당신은 게임을 항상 원시 좌표를 획득 할 수있다 상대 계산. 즉 getRawX()/getRawY()을 사용하고 View.getLocationOnScreen() 및/또는 getLocationInWindow()에서 가져온보기의 왼쪽 상단 모서리의 좌표를 뺍니다. 효율적인 것은 아니지만 유용한 해결 방법입니다.

+0

안녕하세요, dberm, 답변 주셔서 감사합니다 :) 나는 내 은하 s + (2.3.3) 및 Google 넥서스 전화 (4.0)로 이것을 테스트했습니다. 당신이 제안한 것처럼 2.3.3에서 다른 화면 크기를 가진 두 개의 장치로 에뮬레이터에서 프로그램을 테스트했습니다 - 값이 정확합니다. 다른 안드로이드 버전 (2.3.3 및 4.0)에서 두 개의 동일한 화면 크기 (480x800)로 테스트하는 것도 정확합니다. 하지만 안드로이드 4.0과 720x1280의 화면 크기를 가진 장치를 테스트 해보니 다시 절대 값을 얻을 수 있습니까?! 이걸 이해하지 못한다 ... 매우 혼란 스럽다. (( – jennymo

+0

) 2.3 & 4.0 (각각 화면 크기와 해상도가 같은) 테스트에서 같은 값을 보였습니까? 그러면 API 버전과 관련이 없다고 생각됩니다. 프로그램이 정상적으로 작동하고 있지만 화면 크기가 커지면 다른 값을 얻을 수 있다고 말합니까? 원래 값의 약 1.5 배 (해상도를 고려하지 않음을 나타냄) 또는 완전히 다른 것입니까? 2.3.3에서 더 높은 해상도로 시도해 보셨습니까? – dberm22

+0

그래, 2.3.3에서 더 높은 해상도로 시도해 보았습니다. 올바른 값을주었습니다 ...이 동작을 이해하지 못했습니다. 원래 값의 4.0에서 작은 해상도에서 나는 약 95의 값을 얻었고 4.0에서 더 높은 해상도에서 나는 650을 얻습니다 ... 그것이 상대 값 대신 절대 값 인 것처럼 보입니다 .- – jennymo