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;
    }
}
相关文章
相关标签/搜索