느려요

진짜로

IT/Mobile

[Android/Java] Pixel <-> DP 변환

느이 2023. 2. 14. 09:27

안드로이드에서는 Density-Independent Pixel 라는 DIP (DP) 값을 사용해서 UI의 크기를 표시하는데 이 값은 픽셀 값이 아닙니다.

 

이 개념은 안드로이드 기기의 다양한 해상도에 상관 없이 일정하게 같은 크기를 유지하기 위해 도입된 개념인데

 

해상도가 1280x720인 스마트폰과 2560x1440인 스마트폰 둘다 같은 dp 값이 설정되었다면 모두 같은 크기로 보여질 수 있습니다.

 

 

다만, 소스코드상에서는 이 값을 dp값이 아닌 픽셀값으로 지정해줘야 하는데

픽셀값이 스마트폰의 해상도마다 다르기 때문에 변환해주는 함수를 만들었습니다.

 

Pixel -> DP , DP -> Pixel 둘 다 만들었으니 대충 갖다 쓰시면 됩니다.

 

/**
 * @param context
 * @param dp
 * @return
 */
public static float convertDpToPixel(Context context, float dp){
    return (dp * context.getResources().getDisplayMetrics().density);
}

/**
 * @param context
 * @param px
 * @return
 */
public static float convertPixelsToDp(Context context, float px){
    return (px / context.getResources().getDisplayMetrics().density);
}
반응형