diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/notification/WarningFloatWindowHelper.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/notification/WarningFloatWindowHelper.kt index 0cdc3fc1a1..3f1b4a2338 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/notification/WarningFloatWindowHelper.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/notification/WarningFloatWindowHelper.kt @@ -139,7 +139,7 @@ internal class WarningFloatWindowHelper( config.statusListenerMapIMoGo.forEach { listener -> listener.onShow() } - if (frameLayout == null || config.isAnim) return + if (frameLayout == null|| frameLayout?.isAttachedToWindow == false || config.isAnim) return enterAnimator = AnimatorManager(frameLayout!!, params, windowManager, config) .enterAnim()?.apply { // 可以延伸到屏幕外,动画结束按需去除该属性,不然旋转屏幕可能置于屏幕外部 @@ -180,7 +180,7 @@ internal class WarningFloatWindowHelper( config.statusListenerMapIMoGo.forEach { listener -> listener.onDismiss() } - if (frameLayout == null || (config.isAnim && enterAnimator == null)) return + if (frameLayout == null|| frameLayout?.isAttachedToWindow == false || (config.isAnim && enterAnimator == null)) return enterAnimator?.cancel() val animator: Animator? = AnimatorManager(frameLayout!!, params, windowManager, config).exitAnim() @@ -223,7 +223,7 @@ internal class WarningFloatWindowHelper( */ @SuppressLint("RtlHardcoded") private fun setGravity(view: View?) { - if (config.locationPair != Pair(0, 0) || view == null) return + if (config.locationPair != Pair(0, 0) || view == null || !view.isAttachedToWindow) return val parentRect = Rect() // 获取浮窗所在的矩形 windowManager.defaultDisplay.getRectSize(parentRect)