华为折叠屏从小屏启动APP,SHOW一个Dialog,显示问题

最近适配华为折叠屏的时间,遇到一个很坑的问题?

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);
Android应用开发中,Dialog显示异常通常是由于不同设备和Android版本间的布局和API差异所导致的。为了解决这个问题,可以采取以下策略: 参考资源链接:[Android应用兼容性问题及解决方案](https://wenku.csdn.net/doc/648a70c940f93c404cba5b3d?spm=1055.2569.3001.10343) 1. **自定义Dialog布局**:由于不同Android版本对Dialog布局的支持存在差异,开发者可以通过自定义Dialog的布局来更好地控制显示效果。例如,使用相对布局(RelativeLayout)或线性布局(LinearLayout)来替代默认布局,并确保在不同API级别上进行测试。 2. **条件判断兼容性问题**:使用`Build.VERSION.SDK_INT`来判断当前设备的API级别,并根据不同的API级别编写相应的代码逻辑。这样可以确保在较新的Android版本上使用新特性,同时在较老版本上通过兼容性代码来实现类似功能。 3. **使用兼容性库**:Android Support Library或AndroidX提供了很多兼容性的组件和工具,这些可以帮助开发者更容易地实现向后兼容。例如,可以使用`android.support.v7.app.AlertDialog`来创建一个兼容不同版本的弹窗。 4. **适配不同幕尺寸和分辨率**:确保Dialog在不同设备上的显示效果,需要进行适配。可以通过定义不同尺寸的资源文件(如drawable-hdpi、drawable-xhdpi等)来处理不同分辨率的显示问题。 5. **进行充分的测试**:在多种Android设备和模拟器上进行测试是发现和解决兼容性问题的关键。开发者应该在不同幕尺寸、不同Android版本的设备上测试Dialog显示,包括华为、小米、三星等主流手机厂商的设备。 6. **关注文档和社区**:开发者应持续关注Android官方文档和开发者社区,及时了解最新的兼容性问题和解决方案。 通过上述策略,开发者可以有效地解决不同设备和Android版本间Dialog显示异常的问题,提升应用的用户体验和稳定性。建议深入研究《Android应用兼容性问题及解决方案》一书,该书详细讲解了Android兼容性问题的原因和解决方法,对于解决当前问题有极大的帮助。 参考资源链接:[Android应用兼容性问题及解决方案](https://wenku.csdn.net/doc/648a70c940f93c404cba5b3d?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值