Android 获取屏幕的多种信息

开发中有时候就需要用到屏幕的多种信息,这里提供一个工具类,用于获取屏幕高度、宽度、状态栏高度、标题栏高度、虚拟键高度等

public class ScreenUtils {

    //包含虚拟键在内的屏幕高度
    public static int getScreenHeightWithVirtualBar(Activity activity) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
        return displayMetrics.heightPixels;
    }

    //屏幕宽度
    public static int getScreenWidth(Activity activity) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
        return displayMetrics.widthPixels;
    }

    //不包含虚拟键在内的屏幕高度
    public static int getScreenHeightWithoutVirtualBar(Activity activity) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        return displayMetrics.heightPixels;
    }

    //状态栏高度
    public static int getStatusBarHeight(Activity activity) {
        int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
        return activity.getResources().getDimensionPixelSize(resourceId);
    }

    /**
     * 获取虚拟按键的高度
     * 会根据当前是否有显示虚拟按键来返回相应的值
     * 即如果隐藏了虚拟按键,则返回零
     */
    public static int getVirtualBarHeight(Activity activity) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        int usableHeight = displayMetrics.heightPixels;
        activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
        int realHeight = displayMetrics.heightPixels;
        return realHeight - usableHeight;
    }

    /**
     * 获取虚拟按键的高度,无关虚拟按键是否显示
     */
    public static int getNavigationBarHeight(Activity activity) {
        int resourceId = activity.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
        return activity.getResources().getDimensionPixelSize(resourceId);
    }

    /**
     * 标题栏高度
     */
    public static int getTitleHeight(Activity activity) {
        return activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
    }

}

我的手机获取到的信息如下所示

03-06 14:27:08.408 32669-32669/coom.czy.myapplication E/Main屏幕真实高度:: 1280
03-06 14:27:10.481 32669-32669/coom.czy.myapplication E/Main屏幕去除虚拟按键后的高度:: 1184
03-06 14:27:13.222 32669-32669/coom.czy.myapplication E/Main屏幕宽度:: 720
03-06 14:27:17.221 32669-32669/coom.czy.myapplication E/Main虚拟键高度:: 96
03-06 14:27:21.425 32669-32669/coom.czy.myapplication E/Main状态栏高度: 50
03-06 14:27:22.467 32669-32669/coom.czy.myapplication E/Main标题栏高度: 112

这里提供示例代码下载:Android 获取屏幕的多种信息

你可能感兴趣的:(Android 获取屏幕的多种信息)