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

조회수 3418회

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

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

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

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);
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)