有关Android屏幕的工具类 → AppScreenMgr

来源:互联网 发布:nginx readresponse 编辑:程序博客网 时间:2024/06/05 03:04
 package com.jingewenku.abrahamcaijin.commonutil;
 import android.app.Activityimport android.content.Contextimport android.content.res.Resourcesimport android.graphics.Bitmapimport android.graphics.Rectimport android.util.DisplayMetricsimport android.view.Displayimport android.view.Viewimport android.view.WindowManager;   import java.lang.reflect.Method;   /** * 主要功能:有关Android屏幕的工具类 * @Prject: CommonUtilLibrary * @Package: com.jingewenku.abrahamcaijin.commonutil * @author: AbrahamCaiJin * @date: 2017年05月04日 14:13 * @Copyright: 个人版权所有 * @Company: * @version: 1.0.0 */   public class AppScreenMgr/** * Get the width of the screen. *获得屏幕宽度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the width of the screen. */ public static int getScreenWidth(Context context) { WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(metrics); return metrics.widthPixels; }   /** * Get the height of the screen. *获得屏幕高度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the height of the screen. */ public static int getScreenHeight(Context context) { WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(metrics); return metrics.heightPixels; }   /** * * Whether the Status bar is hidden or not,the method always helps you get * the height of Status bar. *获得状态栏的高度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the height of Status bar. */ public static int getStatusHeight(Context context) { int statusHeight = -1tryClass<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int id = (Integer) (clazz.getField("status_bar_height").get(object)); statusHeight = context.getResources().getDimensionPixelSize(id); } catch (Exception e) { e.printStackTrace(); } return statusHeight; }   /** * 功能描述:获取整块屏幕的高度 * * @param context * @return int */ public static int getRealScreenHeight(Context context) { int dpi = 0Display display = ((Activity) context).getWindowManager() .getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); @SuppressWarnings("rawtypes"Class c; try { c = Class.forName("android.view.Display"); @SuppressWarnings("unchecked")Method method = c.getMethod("getRealMetrics",DisplayMetrics.class); method.invoke(display, dm); dpi = dm.heightPixels; } catch (Exception e) { e.printStackTrace(); } return dpi; }   /** * 功能描述:获取虚拟按键区域的高度 * * @param context * @return int 如果有虚拟按键则返回其高度否则返回0; */ public static int getNavigationAreaHeight(Context context) { int realScreenHeight = AppScreenMgr.getRealScreenHeight(context); int screenHeight = AppScreenMgr.getScreenHeight(context);   return realScreenHeight - screenHeight; }   /** * 获取导航栏高度 * @param c * @return */ public static int getNavigationBarrH(Context c) { Resources resources = c.getResources(); int identifier = resources.getIdentifier("navigation_bar_height","dimen","android"); return resources.getDimensionPixelOffset(identifier); }   private AppScreenMgr() { /* cannot be instantiated*/ throw new UnsupportedOperationException("cannot be instantiated"); }   /** * 获取当前屏幕截图,包含状态栏 */ 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;   }   /** * 获取当前屏幕截图,不包含状态栏 */ 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; } }
原创粉丝点击