Android屏幕相關輔助類 ScreenUtils

ed6y 9年前發布 | 6K 次閱讀 Java Android

 import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;

/**

  • 獲得屏幕相關的輔助類
  • */
    public class ScreenUtils
    {
    private ScreenUtils()
    {

    /* cannot be instantiated */  
    throw new UnsupportedOperationException("cannot be instantiated");  
    

    }

    /**

    • 獲得屏幕高度
    • @param context
    • @return */
      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 */
      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 */
      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 */
      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 */
      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;

    }

} </pre>

 本文由用戶 ed6y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!