最近适配华为折叠屏的时间,遇到一个很坑的问题?
1、UI设计如下:打开一个Activity从底部弹出Dialog,横屏的时候从右侧弹出Dialog,并右侧弹出Dialog宽为屏幕的一半
如果杀死APP进程,从这折叠屏展开的到进入,是没问题的,界面显示正常,但是如果杀死进程,从折叠状态的屏幕进入,UI显示就有异常,DIalog显示横屏的时候右侧弹出的Dialog,原本设置的是为屏幕的一半,但是显示的没有屏幕的一半。
多种测试,后来发现无论设置Dialog的宽高,横屏显示的是一样,大概为华为手机竖屏显示的一半(因为华为折叠屏,竖屏显示,分屏显示),我猜测可能是折叠屏打开,windows最大宽度为折叠屏的宽度,切换横屏的时候,windows宽不变。
解决方法:1、切换屏幕的时候,重新设置windows的宽高和dialog的宽高
//设置Window的宽高,防止华为折叠屏折叠状态,打开APP,横屏状态下,显示不全
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = mScreenHeight/2;
lp.height = DPIUtil.getDefaultDisplay().getHeight();
getWindow().setGravity(Gravity.RIGHT|Gravity.TOP);
getWindow().setAttributes(lp);