自己在网上找了几套模版,方法都一样就是参数都一样,因为学习的视频里用了第一个方法及参数 我也就采用了第一种方法,因为怕第二种方法的参数写错!
第一种:
- import android.content.Context;
- public class DensityUtil {
- /**
- * 根据手机的分辨率从 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大小单位转换工具类
- *
- * @author wader
- *
- */
- 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);
- }
- }