화면 크기를 픽셀 단위로 구할 수 있을까요?


제가 개인적으로 만든 작업물이 있는데요 이거를 프로그램상에서 우측 상단에 배치하고 싶습니다. 위쪽 경계선으로부터 n픽셀, 오른쪽 경계선으로부터 m픽셀 이런식으로요. 결론적으로 화면의 가로와 세로 크기를 구하는 방법과 작업물을 원하는 위치에 배치시키는 방법이 필요한 상황입니다.

int px = screenWidth - m;
int py = screenHeight - n;

MainActivity에서 screenWidth와 screenHeight의 크기 어떻게 구하나요?

  • 2016년 05월 17일에 작성됨

조회수 184


1 답변


좋아요
0
싫어요
채택취소하기

화면의 크기를 픽셀 단위로 구하고 싶다면 getSize 메소드를 사용하면 됩니다.

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

만약 Activty내에서의 상황이 아니라면 아래와 같이 WINDOW_SERVICE를 사용해서 Display(화면에 대한 정보)를 얻을 수 있죠.

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

getSize메소드가 나오기 이전에는(API level 13) getWidth와 getHeight메소드를 사용했었죠(지금은 사용하지 않습니다).

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

그러나 위의 상황 같은 경우에는 레이아웃의 margin이나 padding을 활용하는게 더 좋아보이네요.

DisplayMetrics를 활용할 수도 있습니다. DisplayMetrics는 화면과 관련된 일반적인 정보(크기, 표시 밀도, 폰트 크기 등)를 표현하는 기능을 하고 DisplayMetrics의 구성요소들에 접근하시려면 object를 아래와 같이 초기화해주시면 됩니다.

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

화면의 가로 크기를 픽셀 단위로 얻고 싶다. widthPixels 메소드를 사용하시면 되겠습니다.

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
  • 2016년 05월 18일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close