Android开发中常用屏幕单位转换

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

public class DisplayTool {
   //要根据实际情况获取到上下文Context,也可以在方法中加入context作为参数
    private static final float density = context.getResources().getDisplayMetrics().density;
    private static final float scaledDensity =context.getResources().getDisplayMetrics().scaledDensity;

    /**
     * 将px值转换为dip或dp值,保证尺寸大小不变
     */
    public static int px2dip(float pxValue) {
        return (int) (pxValue / density + 0.5f);
    }

    /**
     * 将dip或dp值转换为px值,保证尺寸大小不变
     */
    public static int dip2px(float dipValue) {
        return (int) (dipValue * density + 0.5f);
    }

    /**
     * 将px值转换为sp值,保证文字大小不变
     */
    public static int px2sp(float pxValue) {
        return (int) (pxValue / scaledDensity + 0.5f);
    }

    /**
     * 将sp值转换为px值,保证文字大小不变
     */
    public static int sp2px(float spValue) {
        return (int) (spValue * scaledDensity + 0.5f);
    }

}