-- Android
PiXEL to DP, DP to PIXEL
어린왕자악꿍
2015. 7. 16. 10:08
코드로 넓이나 마진 등의 수치를 지정할 때 Pixel이나 DP의 단위로 지정해야 해서 단위를 변경해야 할 경우가 있다.
필자의 경우 아래의 함수들을 사용하고 있다.
1. PIXEL to DP
public static int getPixelToDp(Context context, int pixel) {
float dp = 0;
try {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
dp = pixel / (metrics.densityDpi / 160f);
} catch (Exception e) {
float dp = 0;
try {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
dp = pixel / (metrics.densityDpi / 160f);
} catch (Exception e) {
}
return (int) dp;
}
return (int) dp;
}
2. DP to PIXEL
public static int getDpToPixel(Context context, int DP) {
float px = 0;
try {
px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DP, context.getResources().getDisplayMetrics());
} catch (Exception e) {
float px = 0;
try {
px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DP, context.getResources().getDisplayMetrics());
} catch (Exception e) {
}
return (int) px;
return (int) px;
}
public static int getDpToPixel(Context context, float DP) {
float px = 0;
try {
px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DP, context.getResources().getDisplayMetrics());
} catch (Exception e) {
float px = 0;
try {
px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DP, context.getResources().getDisplayMetrics());
} catch (Exception e) {
}
return (int) px;
}
return (int) px;
}
public static int getDpToPixel(Context context, double DP) {
float px = 0;
try {
px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) DP, context.getResources()
float px = 0;
try {
px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) DP, context.getResources()
.getDisplayMetrics());
} catch (Exception e) {
} catch (Exception e) {
}
return (int) px;
}
return (int) px;
}