美文网首页
Android屏幕信息工具类-ScreenInfoUtils

Android屏幕信息工具类-ScreenInfoUtils

作者: 积木Blocks | 来源:发表于2018-12-19 00:46 被阅读22次

    简介


    • 工具类仅仅适配API19,如需适API14,请参考
    • 提供获取应用程序屏幕宽高的方法
    • 提供获取实际屏幕宽高的方法
    • 提供打印屏幕基本信息方法
      • 宽高
      • dpi
      • density

    Code(API19)


    package com.yh.screeninfo;
    
    import android.app.Activity;
    import android.content.Context;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.Display;
    import android.view.WindowManager;
    
    /**
     * Get Screen Information Utils
     *
     * @author yh
     * @date 2018/12/18.
     */
    public class ScreenInfoUtils {
    
        private static final String TAG = "ScreenInfoUtils";
    
        /**
         * Get Screen Width
         */
        public static int getScreenWidth(Context context) {
            return getDisplayMetrics(context).widthPixels;
        }
    
        /**
         * Get Screen Height
         */
        public static int getScreenHeight(Context context) {
            return getDisplayMetrics(context).heightPixels;
        }
    
    
        /**
         * Get Screen Real Height
         *
         * @param context Context
         * @return Real Height
         */
        public static int getRealHeight(Context context) {
            Display display = getDisplay(context);
            if (display == null) {
                return 0;
            }
            DisplayMetrics dm = new DisplayMetrics();
            display.getRealMetrics(dm);
            return dm.heightPixels;
        }
    
        /**
         * Get Screen Real Width
         *
         * @param context Context
         * @return Real Width
         */
        public static int getRealWidth(Context context) {
            Display display = getDisplay(context);
            if (display == null) {
                return 0;
            }
            DisplayMetrics dm = new DisplayMetrics();
            display.getRealMetrics(dm);
            return dm.widthPixels;
        }
    
        /**
         * Get StatusBar Height
         */
        public static int getStatusBarHeight(Context mContext) {
            int resourceId = mContext.getResources().getIdentifier("status_bar_height", "dimen", "android");
            if (resourceId > 0) {
                return mContext.getResources().getDimensionPixelSize(resourceId);
            }
            return 0;
        }
    
        /**
         * Get ActionBar Height
         */
        public static int getActionBarHeight(Context mContext) {
            TypedValue tv = new TypedValue();
            if (mContext.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
                return TypedValue.complexToDimensionPixelSize(tv.data, mContext.getResources().getDisplayMetrics());
            }
            return 0;
        }
    
        /**
         * Get NavigationBar Height
         */
        public static int getNavigationBarHeight(Context mContext) {
            Resources resources = mContext.getResources();
            int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
            if (resourceId > 0) {
                return resources.getDimensionPixelSize(resourceId);
            }
            return 0;
        }
    
        /**
         * Get Density
         */
        private static float getDensity(Context context) {
            return getDisplayMetrics(context).density;
        }
    
        /**
         * Get Dpi
         */
        private static int getDpi(Context context) {
            return getDisplayMetrics(context).densityDpi;
        }
    
        /**
         * Get Display
         *
         * @param context Context for get WindowManager
         * @return Display
         */
        private static Display getDisplay(Context context) {
            WindowManager wm;
            if (context instanceof Activity) {
                Activity activity = (Activity) context;
                wm = activity.getWindowManager();
            } else {
                wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            }
            if (wm != null) {
                return wm.getDefaultDisplay();
            }
            return null;
        }
    
        /**
         * Get DisplayMetrics
         *
         * @param context Context for get Resources
         * @return DisplayMetrics
         */
        private static DisplayMetrics getDisplayMetrics(Context context) {
            return context.getResources().getDisplayMetrics();
        }
    
    
        /**
         * Get ScreenInfo
         */
        private static String getScreenInfo(Context context) {
            return " \n" +
                    "--------ScreenInfo--------" + "\n" +
                    "Screen Width : " + getScreenWidth(context) + "px\n" +
                    "Screen RealWidth :" + getRealWidth(context) + "px\n" +
                    "Screen Height: " + getScreenHeight(context) + "px\n" +
                    "Screen RealHeight: " + getRealHeight(context) + "px\n" +
                    "Screen StatusBar Height: " + getStatusBarHeight(context)+ "px\n" +
                    "Screen ActionBar Height: " + getActionBarHeight(context)+ "px\n" +
                    "Screen NavigationBar Height: " + getNavigationBarHeight(context)+ "px\n" +
                    "Screen Dpi: " + getDpi(context) + "\n" +
                    "Screen Density: " + getDensity(context) + "\n" +
                    "--------------------------";
        }
    
    
        /**
         * Print screenInfo to logcat
         */
        public static void printScreenInfo(Context context) {
            Log.d(TAG, getScreenInfo(context));
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Android屏幕信息工具类-ScreenInfoUtils

          本文链接:https://www.haomeiwen.com/subject/cbtdkqtx.html