自定義View之尺寸的轉化
在Android的佈局文件中,往往使用dp作爲控件的寬度和高度尺寸,但是在Java代碼中,文字大小或者組件尺寸的單位卻是像素px,這兩個單位有明顯的區別:dp和屏幕的密度有關,而px,sp與屏幕密度無關,所以使用時經常會涉及到兩者之間的互相轉化 :
dpi轉px
public static int Dp2Px(Context context, int dpi) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpi, context.getResources().getDisplayMetrics());
}
px轉dp
public static int Px2Dp(Context context, int px) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, px, context.getResources().getDisplayMetrics());
}
sp轉px
public static int Sp2Px(Context context, int sp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics());
}
px轉sp
public static int Px2Sp(Context context, int px) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, px, context.getResources().getDisplayMetrics());
}