关于屏幕尺寸引起的问题

关于屏幕尺寸引起的问题

1.屏幕尺寸获取

WindowManager wm = (WindowManager) sContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point realSize = new Point();
display.getRealSize(realSize);
//这个拿到的是屏幕的真实尺寸,比如1080*1920
Point availableSize = new Point();
display.getSize(availableSize);
 或者
diswidth = getContext().getResources().getDisplayMetrics().widthPixels;
disheight = getContext().getResources().getDisplayMetrics().heightPixels;
//这两种方法拿到的是屏幕的实际可用尺寸,比如1080*1794,高度是去掉底部导航栏的高度,底部导航栏高度126`

2 遇到的问题(前提是有虚拟按键的手机)
比如使用popWindow的时候需要给他设置高度,如果用真实尺寸1920-offset,比如得到高度是1414的话,那么在8.0以下的手机上显示的效果是正确的,在8.0以上的手机上会发现比预想的偏上,这是因为绘制的时候,从上往下绘制,在8.0以下手机上,就算有虚拟按键,也会绘制到虚拟按键下面,即如果底部有文字的话会被虚拟按键盖住看不到,在8.0以上手机上,从上往下绘制,他并不会绘制到虚拟按键下面,发现popwindow高度比较高,屏幕不够画了,那么他会把offset重新计算一下,整体会往上偏,偏出虚拟按键的高度。
解决方法,不要使用屏幕真实尺寸来算高度,要使用屏幕可用高度计算popwindow高度,那么算出的高度画出来就能刚好从offset到底部导航栏,在所有手机上都不会有问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值