From 3ba92ea9d62c7b5755514057c17d48dec2b822b4 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 17 Oct 2024 19:16:23 +0800 Subject: [PATCH] =?UTF-8?q?[6.7.0][Fix]=E8=A7=A3=E5=86=B3=E5=8F=B3?= =?UTF-8?q?=E4=B8=8B=E8=A7=92=E9=AB=98=E5=BE=B7=E5=9C=B0=E5=9B=BE=E6=B6=88?= =?UTF-8?q?=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/map/MapContainerLayout.kt | 80 ++++++++++++------- .../core/function/view/TravelRealityView.kt | 1 + 2 files changed, 50 insertions(+), 31 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt index 48e9dd35d8..8bc10393e2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt @@ -7,6 +7,7 @@ import android.animation.ValueAnimator import android.content.Context import android.os.Bundle import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.animation.AccelerateDecelerateInterpolator @@ -42,7 +43,9 @@ class MapContainerLayout @JvmOverloads constructor( private var maxMarginStart = 0 private var maxMarginTop = 0 - private var valueAnimator: ValueAnimator? = null + private var zoomInAnimator: ValueAnimator? = null + private var zoomOutAnimator: ValueAnimator? = null + private val evaluator = IntEvaluator() init { LayoutInflater.from(context).inflate(R.layout.view_map_container, this, true) @@ -111,12 +114,17 @@ class MapContainerLayout @JvmOverloads constructor( override fun onDetachedFromWindow() { super.onDetachedFromWindow() MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener("${TAG}${this.hashCode()}") - valueAnimator?.removeAllListeners() + CallerDataCenterBizListener.removeListener("${TAG}${this.hashCode()}") + zoomInAnimator?.removeListener(listenerAdapter) + zoomOutAnimator?.removeListener(listenerAdapter) + zoomInAnimator = null + zoomOutAnimator = null } private fun initView() { shadowView.setOnClickListener(object : OnPreventFastClickListener() { override fun onClickImpl(v: View?) { + Log.d(TAG, "点击了shadowView按钮!") scaleMapWithAnim() } }) @@ -136,48 +144,55 @@ class MapContainerLayout @JvmOverloads constructor( } private fun scaleMapWithAnim() { - if (isPlayingAnim) return + if (isPlayingAnim) { + Log.d(TAG, "动画执行中,直接return") + return + } + Log.d(TAG, "scaleMapWithAnim") if (mapMaxWidth == 0 && maxMarginStart == 0 && !isScaled) { calculate() } if (!isScaled) { - valueAnimator = ValueAnimator.ofInt(mapMinWidth, mapMaxWidth) - val evaluator = IntEvaluator() - valueAnimator?.addUpdateListener { - overMapView.layoutParams = - (overMapView.layoutParams as LayoutParams).also { layoutParams -> - layoutParams.width = it.animatedValue as Int - layoutParams.height = evaluator.evaluate(it.animatedFraction, mapMinHeight, mapMaxHeight) - layoutParams.leftMargin = evaluator.evaluate(it.animatedFraction, maxMarginStart, 0) - layoutParams.topMargin = evaluator.evaluate(it.animatedFraction, maxMarginTop, 0) - } + if (zoomInAnimator == null) { + zoomInAnimator = ValueAnimator.ofInt(mapMinWidth, mapMaxWidth) + zoomInAnimator?.addUpdateListener { + overMapView.layoutParams = + (overMapView.layoutParams as LayoutParams).also { layoutParams -> + layoutParams.width = it.animatedValue as Int + layoutParams.height = evaluator.evaluate(it.animatedFraction, mapMinHeight, mapMaxHeight) + layoutParams.leftMargin = evaluator.evaluate(it.animatedFraction, maxMarginStart, 0) + layoutParams.topMargin = evaluator.evaluate(it.animatedFraction, maxMarginTop, 0) + } + } + zoomInAnimator?.interpolator = AccelerateDecelerateInterpolator() + zoomInAnimator?.addListener(listenerAdapter) + zoomInAnimator?.duration = 400 } - valueAnimator?.interpolator = AccelerateDecelerateInterpolator() - valueAnimator?.addListener(listenerAdapter) - valueAnimator?.duration = 400 - valueAnimator?.start() + zoomInAnimator?.start() } else { - valueAnimator = ValueAnimator.ofInt(mapMaxWidth, mapMinWidth) - val evaluator = IntEvaluator() - valueAnimator?.addUpdateListener { - overMapView.layoutParams = - (overMapView.layoutParams as LayoutParams).also { layoutParams -> - layoutParams.width = it.animatedValue as Int - layoutParams.height = evaluator.evaluate(it.animatedFraction, mapMaxHeight, mapMinHeight) - layoutParams.leftMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginStart) - layoutParams.topMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginTop) - } + if (zoomOutAnimator == null) { + zoomOutAnimator = ValueAnimator.ofInt(mapMaxWidth, mapMinWidth) + zoomOutAnimator?.addUpdateListener { + overMapView.layoutParams = + (overMapView.layoutParams as LayoutParams).also { layoutParams -> + layoutParams.width = it.animatedValue as Int + layoutParams.height = evaluator.evaluate(it.animatedFraction, mapMaxHeight, mapMinHeight) + layoutParams.leftMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginStart) + layoutParams.topMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginTop) + } + } + zoomOutAnimator?.interpolator = AccelerateDecelerateInterpolator() + zoomOutAnimator?.addListener(listenerAdapter) + zoomOutAnimator?.duration = 400 } - valueAnimator?.interpolator = AccelerateDecelerateInterpolator() - valueAnimator?.addListener(listenerAdapter) - valueAnimator?.duration = 400 - valueAnimator?.start() + zoomOutAnimator?.start() } } private val listenerAdapter = object : AnimatorListenerAdapter() { override fun onAnimationStart(animation: Animator) { super.onAnimationStart(animation) + Log.d(TAG, "onAnimationStart") isPlayingAnim = true overMapView.setIsPlaying(true) overMapView.setMapFlag(isScaled) @@ -185,6 +200,7 @@ class MapContainerLayout @JvmOverloads constructor( override fun onAnimationCancel(animation: Animator) { super.onAnimationCancel(animation) + Log.d(TAG, "onAnimationCancel") isPlayingAnim = false overMapView.setIsPlaying(false) overMapView.swapSettings() @@ -200,6 +216,7 @@ class MapContainerLayout @JvmOverloads constructor( override fun onAnimationEnd(animation: Animator) { super.onAnimationEnd(animation) + Log.d(TAG, "onAnimationEnd") isPlayingAnim = false overMapView.setIsPlaying(false) overMapView.swapSettings() @@ -215,6 +232,7 @@ class MapContainerLayout @JvmOverloads constructor( } private fun updateShadowBg(isSmallMap: Boolean) { + Log.d(TAG, "updateShadowBg") if (!isSmallMap) { shadowView.setBackgroundResource(R.drawable.gaojing_bg) } else { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt index b18f4b5686..b2b16c999f 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt @@ -335,6 +335,7 @@ class TravelRealityView @JvmOverloads constructor( } fun swapSettings() { + Log.d(TAG, "swapSettings") if (isSmallMap) { Message.obtain().apply { what = CLEAR_ALL_DATA