Android Dp,Sp和Px互換

public class Util {
    
    /*
    * 將px轉換成dp值
    * 
    * */

    public static int px2dp(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /*
    * 將dp轉換成px值
    * 
    * */
    public static int dp2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }
    
    /*
    * 將px轉換成sp值
    * 
    * */
    public static int px2sp(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / scale + 0.5f);
    }
    
    /*
    * 將sp轉換成px值
    * 
    * */
    public static int sp2px(Context context, float spValue) {
        final float scale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * scale + 0.5f);
    }
}

使用系統提供的TypedValue轉換java

public class Util {
    
    private Context context;
    
    /*
    * dp2px
    * */
    public int dp2px(int dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getMetrics());
    }
    
    /*
    * sp2px
    * */
    public int sp2px(int sp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, getMetrics());
    }
    
    public DisplayMetrics getMetrics() {
        return context.getResources().getDisplayMetrics();
    }
    
    public void setContext(Context context) {
        this.context =context;
    }
}
相關文章
相關標籤/搜索