content: package com.cjj.mousepaint.utils;
  
  import android.app.Activity;
  import android.content.Context;
  import android.content.res.Resources;
  import android.graphics.Bitmap;
  import android.graphics.Rect;
  import android.util.DisplayMetrics;
  import android.view.View;
  import android.view.WindowManager;
  
  import com.cjj.mousepaint.MosuePaintAppication;
  
  
  /**
   * 屏幕工具类
   */
  public class ScreenUtil {
      public static final Context context = MosuePaintAppication.appication;
  
      private ScreenUtil()
      {
          throw new UnsupportedOperationException("禁止实例化该类！");
      }
  
      /**
       * 获得屏幕高度
       * @param context
       * @return
       */
      public static int getScreenWidth()
      {
          WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
          DisplayMetrics outMetrics = new DisplayMetrics();
          wm.getDefaultDisplay().getMetrics(outMetrics);
          return outMetrics.widthPixels;
      }
  
      /**
       * 获得屏幕宽度
       * @param context
       * @return
       */
      public static int getScreenHeight()
      {
          WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
          DisplayMetrics outMetrics = new DisplayMetrics();
          wm.getDefaultDisplay().getMetrics(outMetrics);
          return outMetrics.heightPixels;
      }
  
      /**
       * 获得状态栏的高度
       * @param context
       * @return
       */
      public static int getStatusHeight()
      {
          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
       */
      public static Bitmap snapShotWithStatusBar(Activity activity)
      {
          View view = activity.getWindow().getDecorView();
          view.setDrawingCacheEnabled(true);
          view.buildDrawingCache();
          Bitmap bmp = view.getDrawingCache();
          int width = getScreenWidth();
          int height = getScreenHeight();
          Bitmap bp = null;
          bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
          view.destroyDrawingCache();
          return bp;
  
      }
  
      /**
       * 获取当前屏幕截图，不包含状态栏
       * @param activity
       * @return
       */
      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();
          int height = getScreenHeight();
          Bitmap bp = null;
          bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight);
          view.destroyDrawingCache();
          return bp;
  
      }
  
      /**
       * 获取屏幕尺寸与密度.
       *
       * @param context the context
       * @return mDisplayMetrics
       */
      public static DisplayMetrics getDisplayMetrics(Context context) {
          Resources mResources;
          if (context == null) {
              mResources = Resources.getSystem();
  
          } else {
              mResources = context.getResources();
          }
          //DisplayMetrics{density=1.5, width=480, height=854, scaledDensity=1.5, xdpi=160.421, ydpi=159.497}
          //DisplayMetrics{density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=160.42105, ydpi=160.15764}
          DisplayMetrics mDisplayMetrics = mResources.getDisplayMetrics();
          return mDisplayMetrics;
      }
  
      /**
       * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
       */
      public static int dip2px(float dpValue) {
          final float scale = context.getResources().getDisplayMetrics().density;
          return (int) (dpValue * scale + 0.5f);
      }
  
      /**
       * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
       */
      public static int px2dip(float pxValue) {
          final float scale = context.getResources().getDisplayMetrics().density;
          return (int) (pxValue / scale + 0.5f);
      }
  
  
  }
  