package android.marshon.likequanmintv.librarys.utils.screen; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; import android.marshon.likequanmintv.base.APP; import android.util.DisplayMetrics; import android.view.View; import android.view.WindowManager; /** * Created by fulunyong on 2016/2/26 13:10 * * @email fulunyong@126.com */ public class ScreenUtils { private ScreenUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获得屏幕高度 * @param context * @return */ public static int getScreenWidth(Context context) { if (null==context){ context= APP.getContext(); } 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) { if (null==context){ context= APP.getContext(); } 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) { if (null==context){ context= APP.getContext(); } 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) { if (null==activity){ return null; } View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp; bp = Bitmap.createBitmap(bmp, 0, 0, width, height); view.destroyDrawingCache(); return bp; } /** * 获取当前屏幕截图,不包含状态栏 * @param activity * @return */ public static Bitmap snapShotWithoutStatusBar(Activity activity) { if (null==activity){ return null; } 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; } /** * 将px值转换为sp值,保证文字大小不变 * @param pxValue * @return */ public static int px2sp(float pxValue) { final float fontScale = APP.getContext().getResources() .getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变 * @return */ public static int sp2px(float spValue) { final float fontScale = APP.getContext().getResources() .getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * 将px值转换为dip或dp值,保证尺寸大小不变 * * @param pxValue * @return */ public static int px2dp(float pxValue) { final float scale =APP.getContext().getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将dip或dp值转换为px值,保证尺寸大小不变 * * @param dipValue * @return */ public static int dp2px(float dipValue) { final float scale =APP.getContext().getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } }