判断手机是否有虚拟按钮,获取虚拟按钮的高度

来源:互联网 发布:新中新dkq a16d软件 编辑:程序博客网 时间:2024/05/13 10:53

由于手机的分辨率不同,有时候每次进入某页面时需要动态计算高度时,那么就需要区分手机是否是包含虚拟按钮的。有的话,算多了就减去虚拟按钮的高度;没有的话就不用减了。


  • 判断手机是否有虚拟按钮
    /**     * 获取是否存在NavigationBar,是否有虚拟按钮     */    public static boolean checkDeviceHasNavigationBar(Context context) {        boolean hasNavigationBar = false;        Resources rs = context.getResources();        int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");        if (id > 0) {            hasNavigationBar = rs.getBoolean(id);        }        try {            Class systemPropertiesClass = Class.forName("android.os.SystemProperties");            Method m = systemPropertiesClass.getMethod("get", String.class);            String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");            if ("1".equals(navBarOverride)) {                hasNavigationBar = false;            } else if ("0".equals(navBarOverride)) {                hasNavigationBar = true;            }        } catch (Exception e) {        }        return hasNavigationBar;    }
  • 获取虚拟按钮的高度
    /**     * 获取虚拟按钮ActionBar的高度     *     * @param activity activity     * @return ActionBar高度     */    public static int getActionBarHeight(Activity activity) {        TypedValue tv = new TypedValue();        if (activity.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {            return TypedValue.complexToDimensionPixelSize(tv.data, activity.getResources().getDisplayMetrics());        }        return 0;    }

阅读全文
0 0
原创粉丝点击