如何获取底部虚拟按键栏的高度

如何获取底部虚拟按键栏的高度

API 17之后使用,获取的像素宽高包含虚拟键所占空间,在API 17之前通过反射获取
context.getWindowManager().getDefaultDisplay().getRealMetrics(metric); 获取的像素宽高不包含虚拟键所占空间

 DisplayMetrics metric = new DisplayMetrics();
//context.getWindowManager().getDefaultDisplay().getMetrics(metric);  
int width = metric.widthPixels;  // 宽度(像素)  
int height = metric.heightPixels;  // 高度(像素)  
float density = metric.density;  // dp缩放因子  
int densityDpi = metric.densityDpi;  // 广义密度  
float xdpi = metric.xdpi;//x轴方向的真实密度  
float ydpi = metric.ydpi;//y轴方向的真实密度 
//具体的方法:
 private int getSoftButtonsBarHeight() {
            DisplayMetrics metrics = new DisplayMetrics();
            //这个方法获取可能不是真实屏幕的高度
            mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
            int usableHeight = metrics.heightPixels;
            //获取当前屏幕的真实高度
            mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
            int realHeight = metrics.heightPixels;
            if (realHeight > usableHeight) {
                return realHeight - usableHeight;
            } else {
                return 0;
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值