px, dp, dip, sp의 차이점이 뭔가요?

안드로이드에서 px dip dp sp 의 차이점이 뭐에요?

2답변

  • 좋아요

    1

    싫어요
    채택취소하기

    px (pixel) 그리고 dpi

    디바이스의 스크린에 들어가는 실제 픽셀 (이미지의 파랑 점 1개). alt text 이전의 모든 디바이스(지금의 일반 모니터들) 해상도는 mdpi(160dip)여서 1dp = 1px였으나, 레티나 디스클레이나 그 이상급 해상도들이 나오면서 1px의 크기가 l/m/h/x dip에서 의미하는 값이 달라졌습니다. dpi란 1 인치(inch)당 pixel의 수를 의미합니다. alt text

    dp 와 dip (Density Independent Pixel)

    px만으로는 해상도에 따라 크기가 달라지기 때문에, 안드로이드 폰의 다양한 해상도를 지원하기 위해 만든 단위입니다. 큰 화면이든 작은 화면이든 실제 눈으로보기에 같은 크기로 보이도록 합니다. 즉, 해상도가 낮은폰에서 1cm정도되는 길이를 높은 해상도의 폰에서도 1cm짜리로 보이도록 되어있습니다. px에서 dp로 변환하는 것은 px/dp 계산기를 참고하세요.

    dpi구하는 방법과, java에서 dp를 px직접 바꾸는 방법들은 참고해두세요.

    /* dpi와 density 구하는 방법*/
    DisplayMetrics outMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
    int dpi = outMetrics.densityDpi;
    float density =  outMetrics.density;
    
    /*java코드에서 dp를 px로 바꾸는 방법
    java코드에서 density또는 dpi를 이용해서 dp를 px로 변환할 수도 있지만 TypedValue를 이용해서 다음과 같이 구할 수 있다.
    */
    public int dpToPixel(int dp){
    int px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DP, context.getResources().getDisplayMetrics());
    }
    

    sp(Scale-independent Pixel)

    dp와 비슷하지만 추가적으로 사용자가 선택한 글꼴 크기에 의해 크기가 자동으로 조절됩니다. 이 단위는 글꼴 크기를 지정하는 데 사용되도록 권장합니다. 다른 단위를 sp단위로 바꿔야할 경우에는 안드로이드 픽셀계산기를 사용하세요.

    요약하자면, 레아이웃 등의 UI적 요소는 dp(dip)을 사용하는 것이 좋고, 글자 크기에는 sp를 사용하는 것이 좋습니다. px이나 pt는 사용하지 마세요.

  • px는 픽셀이고 sp는 크기에 독립된 픽셀이고 dip랑 dp는 같은 뜻인데 밀도에 독립된 픽셀이라는 뜻입니다.

    보통 sp는 폰트사이즈에 사용하고 dip는 아무데나 다 사용 가능합니다. dip는 멀티 디바이스환경을 지원해주기 떄문에 픽셀대신에 dip 나 dp를 쓰시는 것을 권장합니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.