关于屏幕尺寸引起的问题

关于屏幕尺寸引起的问题

1.屏幕尺寸获取
WindowManager wm = (WindowManager) sContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point realSize = new Point();
display.getRealSize(realSize);
//这个拿到的是屏幕的真实尺寸,比如1280*1920

Point availableSize = new Point();
display.getSize(availableSize);
或者
diswidth = getContext().getResources().getDisplayMetrics().widthPixels;
disheight = getContext().getResources().getDisplayMetrics().heightPixels;
//这两种方法拿到的是屏幕的实际可用尺寸,比如1280*1794,高度是去掉状态栏和底部导航栏的高度,我测的手机状态栏和底部导航栏高度都是63

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

猜你喜欢

转载自blog.csdn.net/qq_33666539/article/details/80598979