| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package eVVM.apk.helper;
- import android.app.Activity;
- import android.app.ActivityGroup;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.Rect;
- import android.os.Build;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.util.TypedValue;
- import android.view.Display;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.WindowManager;
- /**
- * Created by Android Studio.
- * User: zbb
- * Date: 2019/7/2
- * Describe: ScreenUtil
- */
- public class ScreenUtil {
- private ScreenUtil() {
- /* cannot be instantiated */
- throw new UnsupportedOperationException("cannot be instantiated");
- }
- private static int mStatusHeight = -1;
- public static int dp2px(Context ctx, float dpValue) {
- final float density = ctx.getResources().getDisplayMetrics().density;
- return (int) (dpValue * density + 0.5f);
- }
- public static int sp2px(Context ctx, float spValue) {
- final float scaledDensity = ctx.getResources().getDisplayMetrics().scaledDensity;
- return (int) (spValue * scaledDensity + 0.5f);
- }
- /**
- * 获取屏幕的宽度
- * @param context
- * @return
- */
- public static int getScreenWidth(Context context) {
- WindowManager manager = (WindowManager) context
- .getSystemService(Context.WINDOW_SERVICE);
- Display display = manager.getDefaultDisplay();
- return display.getWidth();
- }
- /**
- * 获取屏幕的高度
- * @param context
- * @return
- */
- public static int getScreenHeight(Context context) {
- WindowManager manager = (WindowManager) context
- .getSystemService(Context.WINDOW_SERVICE);
- Display display = manager.getDefaultDisplay();
- return display.getHeight();
- }
- /**
- * 获得状态栏的高度
- * @param context
- * @return mStatusHeight
- */
- public static int getStatusHeight(Context context) {
- if (mStatusHeight != -1) {
- return mStatusHeight;
- }
- try {
- int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
- if (resourceId > 0) {
- mStatusHeight = context.getResources().getDimensionPixelSize(resourceId);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return mStatusHeight;
- }
- /**
- * 获取当前屏幕截图,不包含状态栏
- * @param activity
- * @return bp
- */
- public static Bitmap snapShotWithoutStatusBar(Activity activity) {
- View view = activity.getWindow().getDecorView();
- view.setDrawingCacheEnabled(true);
- view.buildDrawingCache();
- Bitmap bmp = view.getDrawingCache();
- if (bmp == null) {
- return null;
- }
- Rect frame = new Rect();
- activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
- int statusBarHeight = frame.top;
- Bitmap bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, bmp.getWidth(), bmp.getHeight() - statusBarHeight);
- view.destroyDrawingCache();
- view.setDrawingCacheEnabled(false);
- return bp;
- }
- /**
- * 获取actionbar的像素高度,默认使用android官方兼容包做actionbar兼容
- *
- * @return
- */
- public static int getActionBarHeight(Context context) {
- int actionBarHeight=0;
- if(context instanceof AppCompatActivity &&((AppCompatActivity) context).getSupportActionBar()!=null) {
- Log.d("isAppCompatActivity", "==AppCompatActivity");
- actionBarHeight = ((AppCompatActivity) context).getSupportActionBar().getHeight();
- }else if(context instanceof Activity && ((Activity) context).getActionBar()!=null) {
- Log.d("isActivity","==Activity");
- actionBarHeight = ((Activity) context).getActionBar().getHeight();
- }else if(context instanceof ActivityGroup){
- Log.d("ActivityGroup","==ActivityGroup");
- if (((ActivityGroup) context).getCurrentActivity() instanceof AppCompatActivity && ((AppCompatActivity) ((ActivityGroup) context).getCurrentActivity()).getSupportActionBar()!=null){
- actionBarHeight = ((AppCompatActivity) ((ActivityGroup) context).getCurrentActivity()).getSupportActionBar().getHeight();
- }else if (((ActivityGroup) context).getCurrentActivity() instanceof Activity && ((Activity) ((ActivityGroup) context).getCurrentActivity()).getActionBar()!=null){
- actionBarHeight = ((Activity) ((ActivityGroup) context).getCurrentActivity()).getActionBar().getHeight();
- }
- }
- if (actionBarHeight != 0)
- return actionBarHeight;
- final TypedValue tv = new TypedValue();
- if(context.getTheme().resolveAttribute( android.support.v7.appcompat.R.attr.actionBarSize, tv, true)){
- if (context.getTheme().resolveAttribute(android.support.v7.appcompat.R.attr.actionBarSize, tv, true))
- actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
- if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
- actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
- }else {
- if (context.getTheme().resolveAttribute(android.support.v7.appcompat.R.attr.actionBarSize, tv, true))
- actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
- }
- Log.d("actionBarHeight","===="+actionBarHeight);
- return actionBarHeight;
- }
- /**
- * 设置view margin
- * @param v
- * @param l
- * @param t
- * @param r
- * @param b
- */
- public static void setMargins (View v, int l, int t, int r, int b) {
- if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
- ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
- p.setMargins(l, t, r, b);
- v.requestLayout();
- }
- }
- }
|