Android 开发工具类 07_ScreenUtils

获得屏幕相关的辅助类:

1、获得屏幕高度;

2、获得屏幕宽度;

3、获得状态栏的高度;

4、获取当前屏幕截图,包含状态栏;

5、获取当前屏幕截图,不包含状态栏。

  1 import android.app.Activity;
  2 import android.content.Context;
  3 import android.graphics.Bitmap;
  4 import android.graphics.Rect;
  5 import android.util.DisplayMetrics;
  6 import android.view.View;
  7 import android.view.WindowManager;
  8 
  9 // 获得屏幕相关的辅助类
 10 public class ScreenUtils
 11 {
 12     private ScreenUtils()
 13     {
 14         /* cannot be instantiated */
 15         throw new UnsupportedOperationException("cannot be instantiated");
 16     }
 17 
 18     /**
 19      * 获得屏幕高度
 20      * 
 21      * @param context
 22      * @return
 23      */
 24     public static int getScreenWidth(Context context)
 25     {
 26         WindowManager wm = (WindowManager) context
 27                 .getSystemService(Context.WINDOW_SERVICE);
 28         DisplayMetrics outMetrics = new DisplayMetrics();
 29         wm.getDefaultDisplay().getMetrics(outMetrics);
 30         return outMetrics.widthPixels;
 31     }
 32 
 33     /**
 34      * 获得屏幕宽度
 35      * 
 36      * @param context
 37      * @return
 38      */
 39     public static int getScreenHeight(Context context)
 40     {
 41         WindowManager wm = (WindowManager) context
 42                 .getSystemService(Context.WINDOW_SERVICE);
 43         DisplayMetrics outMetrics = new DisplayMetrics();
 44         wm.getDefaultDisplay().getMetrics(outMetrics);
 45         return outMetrics.heightPixels;
 46     }
 47 
 48     /**
 49      * 获得状态栏的高度
 50      * 
 51      * @param context
 52      * @return
 53      */
 54     public static int getStatusHeight(Context context)
 55     {
 56 
 57         int statusHeight = -1;
 58         try
 59         {
 60             Class<?> clazz = Class.forName("com.android.internal.R$dimen");
 61             Object object = clazz.newInstance();
 62             int height = Integer.parseInt(clazz.getField("status_bar_height")
 63                     .get(object).toString());
 64             statusHeight = context.getResources().getDimensionPixelSize(height);
 65         } catch (Exception e)
 66         {
 67             e.printStackTrace();
 68         }
 69         return statusHeight;
 70     }
 71 
 72     /**
 73      * 获取当前屏幕截图,包含状态栏
 74      * 
 75      * @param activity
 76      * @return
 77      */
 78     public static Bitmap snapShotWithStatusBar(Activity activity)
 79     {
 80         View view = activity.getWindow().getDecorView();
 81         view.setDrawingCacheEnabled(true);
 82         view.buildDrawingCache();
 83         Bitmap bmp = view.getDrawingCache();
 84         int width = getScreenWidth(activity);
 85         int height = getScreenHeight(activity);
 86         Bitmap bp = null;
 87         bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
 88         view.destroyDrawingCache();
 89         return bp;
 90 
 91     }
 92 
 93     /**
 94      * 获取当前屏幕截图,不包含状态栏
 95      * 
 96      * @param activity
 97      * @return
 98      */
 99     public static Bitmap snapShotWithoutStatusBar(Activity activity)
100     {
101         View view = activity.getWindow().getDecorView();
102         view.setDrawingCacheEnabled(true);
103         view.buildDrawingCache();
104         Bitmap bmp = view.getDrawingCache();
105         Rect frame = new Rect();
106         activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
107         int statusBarHeight = frame.top;
108 
109         int width = getScreenWidth(activity);
110         int height = getScreenHeight(activity);
111         Bitmap bp = null;
112         bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
113                 - statusBarHeight);
114         view.destroyDrawingCache();
115         return bp;
116 
117     }
118 }
原文地址:https://www.cnblogs.com/renzimu/p/4535665.html