1. 程式人生 > >dp與px間相互轉換:利用Android原生API實現px轉換dp,dp轉換px

dp與px間相互轉換:利用Android原生API實現px轉換dp,dp轉換px

眾所周知:
       在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值了。
是不是也很方便呢?