아래와 같이 onTouchEvent메소드를 오버라이딩하면 public boolean onTouchEvent(MotionEvent event){ ......... }
event.getX(), event.getY()로 터치좌표 값을 받아올 수 있는데, 이 값은 현재 디스플레이 해상도의 위치값으로 들어옵니다.
그리고, 디스플레이의 실제 해상도를 구해야 하는데, Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 이렇게 Display 객체를 얻은 후
display.getWidth(), display.getHeight()로 디스플레이의 실제 해상도를 얻어올 수 있는데요,
여기까지 했으면, 터치영역의 실 좌표가 해상도에 따라 가변적으로 변하더라도, 어플의 가상 해상도와, 디스플레이의 실 해상도를 갖고 상대적으로 변환된 좌표값을 얻을 수 있을 겁니다.
거기에 어플이 디스플레이 비율에 상관없이 풀해상도로 맞춰지는지, 아니면 어플의 화면 비율을 유지하면서 레터박스가 들어가는 형식인지에 따라 약간의 좌표 보정을 추가해주면 됩니다.
아래와 같이 onTouchEvent메소드를 오버라이딩하면
public boolean onTouchEvent(MotionEvent event){
.........
}
event.getX(), event.getY()로 터치좌표 값을 받아올 수 있는데, 이 값은 현재 디스플레이 해상도의 위치값으로 들어옵니다.
그리고, 디스플레이의 실제 해상도를 구해야 하는데,
Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
이렇게 Display 객체를 얻은 후
display.getWidth(), display.getHeight()로 디스플레이의 실제 해상도를 얻어올 수 있는데요,
여기까지 했으면, 터치영역의 실 좌표가 해상도에 따라 가변적으로 변하더라도, 어플의 가상 해상도와, 디스플레이의 실 해상도를 갖고 상대적으로 변환된 좌표값을 얻을 수 있을 겁니다.
거기에 어플이 디스플레이 비율에 상관없이 풀해상도로 맞춰지는지, 아니면 어플의 화면 비율을 유지하면서 레터박스가 들어가는 형식인지에 따라 약간의 좌표 보정을 추가해주면 됩니다.