Android 获取屏幕高宽度,密度,通知栏高度,截图等常用方法

c519805501 9年前

来自: http://blog.csdn.net//lyhhj/article/details/49105255


分享一下Android中常用的一些辅助方法:

获取屏幕高度:

/**       * 获得屏幕高度       * @param context       * @return       * by Hankkin at:2015-10-07 21:15:59       */      public static int getScreenWidth(Context context) {          WindowManager wm = (WindowManager) context                  .getSystemService(Context.WINDOW_SERVICE);          DisplayMetrics outMetrics = new DisplayMetrics();          wm.getDefaultDisplay().getMetrics(outMetrics);          return outMetrics.widthPixels;      }

获取屏幕宽度:

/**       * 获得屏幕宽度       * @param context       * @return       * by Hankkin at:2015-10-07 21:16:13       */      public static int getScreenHeight(Context context) {          WindowManager wm = (WindowManager) context                  .getSystemService(Context.WINDOW_SERVICE);          DisplayMetrics outMetrics = new DisplayMetrics();          wm.getDefaultDisplay().getMetrics(outMetrics);          return outMetrics.heightPixels;      }
获取屏幕密度:

/**       * 获取屏幕密度       * @param context       * @return       * by Hankkin at:2015-10-07 21:16:29       */      public static float getScreenDensity(Context context) {          return context.getResources().getDisplayMetrics().density;      }

dip转px:

/**       * dip转px像素       * @param context       * @param px       * @return       * by Hankkin at:2015-10-07 21:16:43       */      public static int dip2px(Context context, float px) {          final float scale = getScreenDensity(context);          return (int) (px * scale + 0.5);      }

获取状态栏高度:

/**       * 获得状态栏的高度       * @param context       * @return       * by Hankkin at:2015-10-07 21:16:43       */      public static int getStatusHeight(Context context) {            int statusHeight = -1;          try {              Class<?> clazz = Class.forName("com.android.internal.R$dimen");              Object object = clazz.newInstance();              int height = Integer.parseInt(clazz.getField("status_bar_height")                      .get(object).toString());              statusHeight = context.getResources().getDimensionPixelSize(height);          } catch (Exception e) {              e.printStackTrace();          }          return statusHeight;      }

获取屏幕当前截图:

/**       * 获取当前屏幕截图,包含状态栏       * @param activity       * @return       * by Hankkin at:2015-10-07 21:16:43       */      public static Bitmap snapShotWithStatusBar(Activity activity) {          View view = activity.getWindow().getDecorView();          view.setDrawingCacheEnabled(true);          view.buildDrawingCache();          Bitmap bmp = view.getDrawingCache();          int width = getScreenWidth(activity);          int height = getScreenHeight(activity);          Bitmap bp = null;          bp = Bitmap.createBitmap(bmp, 0, 0, width, height);          view.destroyDrawingCache();          return bp;        }        /**       * 获取当前屏幕截图,不包含状态栏       * @param activity       * @return       * by Hankkin at:2015-10-07 21:16:43       */      public static Bitmap snapShotWithoutStatusBar(Activity activity) {          View view = activity.getWindow().getDecorView();          view.setDrawingCacheEnabled(true);          view.buildDrawingCache();          Bitmap bmp = view.getDrawingCache();          Rect frame = new Rect();          activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);          int statusBarHeight = frame.top;            int width = getScreenWidth(activity);          int height = getScreenHeight(activity);          Bitmap bp = null;          bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height                  - statusBarHeight);          view.destroyDrawingCache();          return bp;        }