public class ScreenUtils { //屏幕宽度 private static int mScreenW; //屏幕高度 private static int mScreenH; //密度 private static float mDensity; /** * 使用前必须初始化一下 * * @param activity */ public static void init(Activity activity) { WindowManager wm = activity.getWindowManager(); Display display = wm.getDefaultDisplay(); mScreenW = display.getWidth() < display.getHeight() ? display.getWidth() : display.getHeight(); mScreenH = display.getWidth() > display.getHeight() ? display.getWidth() : display.getHeight(); mDensity = activity.getResources().getDisplayMetrics().density; } /** * 获取屏幕宽度 * * @return */ public static int getScreenW() { return mScreenW; } /** * 获取屏幕高度 * * @return */ public static int getScreenH() { return mScreenH; } /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) * * @param dpValue * @return */ public static int dip2px(float dpValue) { return (int) (dpValue * mDensity + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp * * @param pxValue * @return */ public static int px2dip(float pxValue) { return (int) (pxValue / mDensity + 0.5f); } /** * 根据720px的屏幕进行转化 * * @param pxValue * @return */ public static int px720dip(float pxValue) { int result = (int) (pxValue * mScreenW / 720); return result; } /** * 根据1080px的屏幕进行转化 * * @param pxValue * @return */ public static int px1080dip(float pxValue) { int result = (int) (pxValue * mScreenW / 1080); return result; } /** * 获取顶部标题栏的高度 * * @param context * @return */ private int getStatusBarHeight(Context context) { Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); sbar = context.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } return sbar; } /** * 获取华为虚拟功能键高度 * * @param context * @return */ public static int getVirtualBarHeigh(Context context) { int vh = 0; WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); try { @SuppressWarnings("rawtypes") Class c = Class.forName("android.view.Display"); @SuppressWarnings("unchecked") Method method = c.getMethod("getRealMetrics", DisplayMetrics.class); method.invoke(display, dm); vh = dm.heightPixels - windowManager.getDefaultDisplay().getHeight(); } catch (Exception e) { e.printStackTrace(); } return vh; } }
ScreenUtils
最新推荐文章于 2021-03-08 09:43:57 发布