[Bug]:反复从竖屏页面切换到横屏页面,在横屏页面偶发不显示EasyWindow的问题!
框架版本【必填】
10.6
问题描述【必填】
显示EasyWindow的竖屏A页面切换到同样需要显示EasyWindow横屏的B页面,B页面会偶发不显示EasyWindow问题。
复现步骤【必填】
反复从B切到A,再从A切到B,B不显示EasyWindow,偶发。
是否必现【必填】
否
项目 targetSdkVersion【必填】
33
出现问题的手机信息【必填】
雷电模拟器 9.0.65
出现问题的安卓版本【必填】
9
问题信息的来源渠道【必填】
自己遇到的
是部分机型还是所有机型都会出现【必答】
部分机型
框架最新的版本是否存在这个问题【必答】
是
框架文档是否提及了该问题【必答】
否
是否已经查阅框架文档但还未能解决的【必答】
是
issue 列表中是否有人曾提过类似的问题【必答】
否
是否已经搜索过了 issue 列表但还未能解决的【必答】
是
是否可以通过 Demo 来复现该问题【必答】
否
提供报错堆栈
您好,打扰了,麻烦您帮忙分析下问题:
我的使用代码:
easyWindow = EasyWindow.with(this).apply {
setContentView(R.layout.layout_phone_play_float_menu)
// 设置成可拖拽的
.setDraggable()
.setGravity(Gravity.RIGHT)
.setOnClickListener(R.id.icon) { _: EasyWindow<*>, _: View? ->
getPhonePlayDialog(this@BasicPhonePlayActivity)?.show()
}
}
easyWindow?.show()
EasyWindow代码排查,问题定位:
从A竖屏切到B横屏页面,通过日志打印发现描述的问题出现时:
当BaseDraggable类onScreenOrientationChange函数执行时,refreshWindowInfo不一定执行了,所以onScreenOrientationChange中的的mCurrentWindowWidth和mCurrentWindowHeight为0,导致percentX和percentY的值为Infinity,最终导致updateLocation(x, y);中的x,y为Int的最大值,坐标过大导致EasyWindow不显示,这是导致EasyWindow在B页面中不显示的主要原因。
其次,还有另一个显示问题,当B页面显示了EasyWindow时,默认位置(右侧垂直居中)偶发性的也会变化,主要原因是mCurrentWindowWidth和mCurrentWindowHeight在横屏的情况下可能获取到的值还是竖屏的,有时候也会是横屏的,所以就是会错乱。
麻烦了~
提供截图或视频
No response
提供解决方案
No response
小伙子,第三方模拟器出现的问题,我这里是不受理的,特别是第三方模拟器,你如果确认真机或者原生的模拟器遇到此问题,再联系我。
小伙子,第三方模拟器出现的问题,我这里是不受理的,特别是第三方模拟器,你如果确认真机或者原生的模拟器遇到此问题,再联系我。
您好,我用 iqoo 8 pro Android13 机型也复现了此问题,还麻烦您帮忙分析下,指导一下解决方案。
这是我截取的问题日志,在没有修改库原始代码的基础上加上日志,希望能协助你定位问题~
小伙子,你说的 Demo 工程无法复现这个问题,我这边确实测试了无法复现,需要你提供一个可供复现的 Demo 工程给到我。
感谢大佬~ 我这边自己处理吧,保证坐标计算时不超出屏幕宽高就行~