代码入下
public class ScreenUtil {private ScreenUtil() {throw new UnsupportedOperationException("cannot be instantiated");}public static int getScreenWidth(Context context) {WindowManager wm = (WindowManager)context.getSystemService("window");DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);return outMetrics.widthPixels;}public static int getScreenHeight(Context context) {WindowManager wm = (WindowManager)context.getSystemService("window");DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);return outMetrics.heightPixels;}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 var5) {var5.printStackTrace();}return statusHeight;}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;}@RequiresApi(api = 17)public static boolean hasSoftKeys(WindowManager windowManager) {Display d = windowManager.getDefaultDisplay();DisplayMetrics realDisplayMetrics = new DisplayMetrics();d.getRealMetrics(realDisplayMetrics);int realHeight = realDisplayMetrics.heightPixels;int realWidth = realDisplayMetrics.widthPixels;DisplayMetrics displayMetrics = new DisplayMetrics();d.getMetrics(displayMetrics);int displayHeight = displayMetrics.heightPixels;int displayWidth = displayMetrics.widthPixels;return realWidth - displayWidth > 0 || realHeight - displayHeight > 0;}public static int getNavigationHeight(Context context) {int result = false;int resourceId = false;int rid = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");if (rid != 0) {int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");return context.getResources().getDimensionPixelSize(resourceId);} else {return 0;}}
}