在xml布局文件中蚪腋,我們既可以設(shè)置px丰歌,也可以設(shè)置dp(或者dip)。一般情況下屉凯,我們都會選擇使用dp立帖,這樣可以保證不同屏幕分辨率的機器上布局一致。但是在代碼中悠砚,如何處理呢晓勇?很多控件的方法中都只提供了設(shè)置px的方法,例如setPadding灌旧,并沒有提供設(shè)置dp的方法绑咱。這個時候,如果需要設(shè)置dp的話枢泰,就要將dp轉(zhuǎn)換成px了描融。
/**
* 如果XML使用dp,那么Java代碼就是用dp轉(zhuǎn)換為px
* 根據(jù)手機的分辨率從 dp 的單位 轉(zhuǎn)成為 px(像素)
*/
private int dip2px(float dpValue)
{
final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根據(jù)手機的分辨率從 px(像素) 的單位 轉(zhuǎn)成為 dp
*/
public static int px2dip(int pxValue)
{
final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* 將px轉(zhuǎn)換為sp
*/
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
/**
* 將sp轉(zhuǎn)換為px
*/
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}