• android获取屏幕宽高工具类


    import java.lang.reflect.Field;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Point;
    import android.util.DisplayMetrics;
    import android.view.Display;
    import android.view.Window;
    import android.view.WindowManager;
    
    /**
     * 获取屏幕宽高工具类
     * Created by Administrator on 2015/10/21 0021.
     */
    public class ScreenUtils {
    
        /**
         * 用于获取状态栏的高度。
         *
         * @return 返回状态栏高度的像素值。
         */
        public static int getStatusBarHeight(Activity activity) {
    
            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());
                return activity.getResources().getDimensionPixelSize(x);
            } catch (Exception e) {
                //LogHelper.e("Exception", "*****EXCEPTION*****
    ", e);
            }
    
            return 0;
    
        }
    
        /**
         * 用于获取状态栏的高度。 使用Resource对象获取(推荐这种方式)
         *
         * @return 返回状态栏高度的像素值。
         */
        public static int getStatusBarHeight(Context context) {
            int result = 0;
            int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
                    "android");
            if (resourceId > 0) {
                result = context.getResources().getDimensionPixelSize(resourceId);
            }
            return result;
        }
    
        /**
         * 获取标题栏高度
         *
         * @param activity
         * @return
         */
        public static int getTitleBarHeight(Activity activity) {
            int contentTop = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
            return contentTop - getStatusBarHeight(activity);
        }
    
        /**
         * 在Activity中获取屏幕的高度和宽度
         *
         * @param activity 在真机中,有时候会发现得到的尺寸不是很准确,需要在AndroidManifest中添加如下配置:
         *            <supports-screens android:smallScreens="true"
         *            android:normalScreens="true" android:largeScreens="true"
         *            android:resizeable="true" android:anyDensity="true" />
         */
        public static int[] getScreenSize(Activity activity) {
            Display display = activity.getWindowManager().getDefaultDisplay();
            Point point = new Point();
            display.getSize(point);
            return new int[] {
                    point.x, point.y
            };
        }
    
        /**
         * 在非Activity中,通常会在Custom View时
         * <p/>
         * 目前不推荐使用(3.2及以下)
         *
         * @param context 在真机中,有时候会发现得到的尺寸不是很准确,需要在AndroidManifest中添加如下配置:
         *            <supports-screens android:smallScreens="true"
         *            android:normalScreens="true" android:largeScreens="true"
         *            android:resizeable="true" android:anyDensity="true" />
         */
        public static int[] getScreenSize(Context context) {
            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            DisplayMetrics dm = new DisplayMetrics();
            wm.getDefaultDisplay().getMetrics(dm);
            return new int[] {
                    dm.widthPixels, dm.heightPixels
            };
    
        }
    
    }
  • 相关阅读:
    HTTP状态码1XX深入理解
    小公司比较吃亏的两道微服务面试题
    趣谈IO多路复用的本质
    白话TCP/IP原理
    Windows 是最安全的操作系统
    白话linux操作系统原理
    google orgchart
    CSharp: itext7.* create pdf file
    javascript: iframe switchSysBar 左欄打開關閉,兼容各瀏覽器操作(edit)
    csharp: Cyotek.GhostScript.Pdf Conversion pdf convert image x64
  • 原文地址:https://www.cnblogs.com/kangweifeng/p/4897700.html
Copyright © 2020-2023  润新知