zoukankan      html  css  js  c++  java
  • 获得屏幕相关的辅助类

    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;
       }
    }
    
  • 相关阅读:
    状压DP【p1879】[USACO06NOV]玉米田Corn Fields
    Tarjan缩点+Spfa最长路【p3627】[APIO2009] 抢掠计划
    Tarjan缩点【p1726】上白泽慧音
    分层图【p4822】[BJWC2012]冻结
    Tarjan缩点+LCA【p2783】有机化学之神偶尔会做作弊
    线段树【p1607】[USACO09FEB]庙会班车Fair Shuttle
    better-scroll踩坑合集
    在浏览器上安装 Vue Devtools工具
    无法执行vue初始化命令
    vue-cli创建第一个项目(用git bash解决上下键移动选择问题)
  • 原文地址:https://www.cnblogs.com/loaderman/p/6435076.html
Copyright © 2011-2022 走看看