其实都是以前保存的代码,最近发现自己的资料库很混乱,索性都整理成博客,方便以后自己要用的时候快速找到。
DisplayUtil.java
/** * 单位转换工具 * * @author carrey * */ public class DisplayUtil { /** * 将px值转换为dip或dp值,保证尺寸大小不变 * * @param pxValue * @param scale * (DisplayMetrics类中属性density) * @return */ public static int px2dip(float pxValue, float scale) { return (int) (pxValue / scale + 0.5f); } /** * 将dip或dp值转换为px值,保证尺寸大小不变 * * @param dipValue * @param scale * (DisplayMetrics类中属性density) * @return */ public static int dip2px(float dipValue, float scale) { return (int) (dipValue * scale + 0.5f); } /** * 将px值转换为sp值,保证文字大小不变 * * @param pxValue * @param fontScale * (DisplayMetrics类中属性scaledDensity) * @return */ public static int px2sp(float pxValue, float fontScale) { return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变 * * @param spValue * @param fontScale * (DisplayMetrics类中属性scaledDensity) * @return */ public static int sp2px(float spValue, float fontScale) { return (int) (spValue * fontScale + 0.5f); } }DisplayParams.java
/** * 屏幕参数工具 * * @author carrey * */ public class DisplayParams { /** 屏幕宽度——px */ public int screenWidth; /** 屏幕高度——px */ public int screenHeight; /** 屏幕密度——dpi */ public int densityDpi; /** 缩放系数——densityDpi/160 */ public float scale; /** 文字缩放系数 */ public float fontScale; /** 屏幕朝向 */ public int screenOrientation; /** 表示屏幕朝向垂直 */ public final static int SCREEN_ORIENTATION_VERTICAL = 1; /** 表示屏幕朝向水平 */ public final static int SCREEN_ORIENTATION_HORIZONTAL = 2; private static DisplayParams singleInstance; /** * 私有构造方法 * * @param context */ private DisplayParams(Context context) { DisplayMetrics dm = context.getResources().getDisplayMetrics(); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; densityDpi = dm.densityDpi; scale = dm.density; fontScale = dm.scaledDensity; screenOrientation = screenHeight > screenWidth ? SCREEN_ORIENTATION_VERTICAL : SCREEN_ORIENTATION_HORIZONTAL; } /** * 获取实例 * * @param context * @return */ public static DisplayParams getInstance(Context context) { if (singleInstance == null) { singleInstance = new DisplayParams(context); } return singleInstance; } /** * 获取新的实例 * * @param context * @return */ public static DisplayParams getNewInstance(Context context) { if (singleInstance != null) { singleInstance = null; } return getInstance(context); } }
/** * 设置文本大小 * @param textSizeSp 文本大小,单位是sp */ public void setTextSize(int textSizeSp) { DisplayParams displayParams = DisplayParams.getInstance(context); this.textSize = DisplayUtil.sp2px(textSizeSp, displayParams.fontScale); invalidate(); }