在android开发中我们经常遇到需要获取屏幕高度和屏幕宽度。下面我就来说下我常用的一个类用于获取屏幕的尺寸
public class ScreenUtils { //获取屏幕宽度 public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics); return metrics.widthPixels; } //获取屏幕高度 public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics); return metrics.heightPixels; } }
通过上面这个类就可以在Activity中获取自定义View的时候快速地获取屏幕的尺寸了。//根据屏幕分辨率将dip转换成px public static int dip2px(Context context, float dpValue) { int scale = context.getResources().getDisplayMetrics().densityDpi; return (int) (dpValue * scale + 0.5f); } //根据屏幕分辨率将px转换成dip public static int px2dip(Context context, float pxValue) { int scale = context.getResources().getDisplayMetrics().densityDpi; return (int) (pxValue / scale + 0.5f); }//强px转换成sp public static int px2sp(Context context, float pxValue) { float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue * fontScale + 0.5f); } //将sp转换成px public static int sp2px(Context context, float spValue) { float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue / fontScale + 0.5f); }