public class ScreenUtils { /** * The context. */ private static Context mContext = ServiceManager.getInstance().getContext(); /** * dp转 px. * * @param value the value * @return the int */ public static int dp2px(float value) { final float scale = mContext.getResources().getDisplayMetrics().densityDpi; return (int) (value * (scale / 160) + 0.5f); } /** * dp转 px. * * @param value the value * @param context the context * @return the int */ public static int dp2px(float value, Context context) { final float scale = context.getResources().getDisplayMetrics().densityDpi; return (int) (value * (scale / 160) + 0.5f); } /** * px转dp. * * @param value the value * @return the int */ public static int px2dp(float value) { final float scale = mContext.getResources().getDisplayMetrics().densityDpi; return (int) ((value * 160) / scale + 0.5f); } /** * px转dp. * * @param value the value * @param context the context * @return the int */ public static int px2dp(float value, Context context) { final float scale = context.getResources().getDisplayMetrics().densityDpi; return (int) ((value * 160) / scale + 0.5f); } /** * sp转px. * * @param value the value * @return the int */ public static int sp2px(float value) { Resources r; if (mContext == null) { r = Resources.getSystem(); } else { r = mContext.getResources(); } float spvalue = value * r.getDisplayMetrics().scaledDensity; return (int) (spvalue + 0.5f); } /** * sp转px. * * @param value the value * @param context the context * @return the int */ public static int sp2px(float value, Context context) { Resources r; if (context == null) { r = Resources.getSystem(); } else { r = context.getResources(); } float spvalue = value * r.getDisplayMetrics().scaledDensity; return (int) (spvalue + 0.5f); } /** * px转sp. * * @param value the value * @return the int */ public static int px2sp(float value) { final float scale = mContext.getResources().getDisplayMetrics().scaledDensity; return (int) (value / scale + 0.5f); } /** * px转sp. * * @param value the value * @param context the context * @return the int */ public static int px2sp(float value, Context context) { final float scale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (value / scale + 0.5f); } /** * 获得屏幕高度 * * @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; } public static int getScreenWidth() { WindowManager wm = (WindowManager) mContext .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(); LogUtil.e(e); } 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; } public static int getStatusBarHeight() { int statusBarHeight = 0; try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object obj = c.newInstance(); Field field = c.getField("status_bar_height"); int x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = mContext.getResources().getDimensionPixelSize(x); } catch(Exception e) { e.printStackTrace(); } return statusBarHeight; }
ScreenUtil
最新推荐文章于 2025-04-03 17:42:04 发布