dp與px間相互轉換:利用Android原生API實現px轉換dp,dp轉換px
阿新 • • 發佈:2019-02-14
眾所周知:
在Android開發中,距離單位google推薦使用“dp”,文字大小的單位使用“sp”,(ps:IOS距離單位是“px”,文字單位是“pt”)但是在實際開發中我們經常會遇到在java程式碼中寫入距離單位,但是這樣的數字代表的是px。那我們要想辦法將“dp”轉換成螢幕畫素點“px”。
於是乎:大部分網上說法是如下兩個方法
/**
* 根據手機的解析度from dp 的單位 轉成為 px(畫素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根據手機的解析度從 px(畫素) 的單位 轉成為 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
其實android的原生也提供了類似的API供我們使用:
我門使用如下方法獲取:TypedValue.applyDimension(unit, value, metrics)引數解析 1:引數一為你想要的數值型別 2:引數二為想要得到數值的型別 例如我們想要25sp: TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 25, context.getResources().getDisplayMetrics()); 返回的數值就是25sp對應的px值了。