diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartProcessView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartProcessView.kt index 535a0d3e82..557497ca74 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartProcessView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartProcessView.kt @@ -4,7 +4,6 @@ import android.animation.Animator import android.animation.ObjectAnimator import android.animation.ValueAnimator import android.content.Context -import android.graphics.drawable.TransitionDrawable import android.os.CountDownTimer import android.text.TextUtils import android.util.AttributeSet @@ -12,7 +11,6 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.content.ContextCompat import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoColdStartStateListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener @@ -52,8 +50,6 @@ class ColdStartProcessView @JvmOverloads constructor( const val TAG = "ColdStartProcessView" const val LOAD_SSM_WAITING_TIME = 180000L //SSM加载超时等待时间 const val COLD_START_WAITING_TIME = 600000L //冷启动超时等待时间 - const val COLD_START_SUCCESS_SHOW_TIME = 3000L //冷启动成功视图展示时长 - const val COLD_START_SUCCESS_TICK_TIME = 500L //冷启动成功视图呼吸时长 } private var ipcConnectStatus = false //连接域控状态,默认是未连接 @@ -71,8 +67,8 @@ class ColdStartProcessView @JvmOverloads constructor( private var coldStartProcessNormalAnim: FrameAnimatorContainerUtils ?= null private var coldStartProcessAbnormalAnim: FrameAnimatorContainerUtils ?= null - private var transition: TransitionDrawable ?= null - private var coldStartSuccessTimer: CountDownTimer?= null //冷启动成功动画倒计时 + private var successAlpha: ObjectAnimator ?= null //冷启动成功呼吸动画 + private var failAlpha: ObjectAnimator ?= null //冷启动失败呼吸动画 init { LayoutInflater.from(context).inflate(R.layout.view_cold_start_process, this, true) @@ -80,15 +76,6 @@ class ColdStartProcessView @JvmOverloads constructor( } private fun initView(){ - - transition = TransitionDrawable( - arrayOf( - ContextCompat.getDrawable(context, R.drawable.icon_cold_start_success_01), // 当前图片 - ContextCompat.getDrawable(context, R.drawable.icon_cold_start_success_02) // 要渐变到的图片 - ) - ) - ivColdStartResult.setImageDrawable(transition) - transition?.isCrossFadeEnabled = true clColdStartLayout.setOnClickListener { CallerHmiManager.showColdStartWindow() } @@ -110,15 +97,25 @@ class ColdStartProcessView @JvmOverloads constructor( coldStartProcessAbnormalAnim?.release() connectSSMTimer?.cancel() connectColdStartTimer?.cancel() + successAlpha?.cancel() + failAlpha?.cancel() } override fun showColdStartProcessView() { super.showColdStartProcessView() ThreadUtils.runOnUiThread { - if(this.visibility != View.VISIBLE){ + if(this@ColdStartProcessView.visibility != View.VISIBLE){ this.visibility = View.VISIBLE - coldStartProcessNormalAnim = FrameAnimatorContainerUtils(R.array.cold_start_process_normal,40,ivColdStartProcess) coldStartProcessAbnormalAnim = FrameAnimatorContainerUtils(R.array.cold_start_process_abnormal,40,ivColdStartProcess) + coldStartProcessNormalAnim = FrameAnimatorContainerUtils(R.array.cold_start_process_normal,40,ivColdStartProcess) + ipcConnectStatus = true + ssmConnectStatus = false + coldStartStatus = false + newColdStart = false + //域控连接成功 + coldStartNormalView() + //开启连接SSM倒计时 + connectSSMProcess() } } } @@ -212,6 +209,8 @@ class ColdStartProcessView @JvmOverloads constructor( //冷启动就绪 coldStartStatus = true showColdStartSuccessView() + //取消冷启动等待 + connectColdStartTimer?.cancel() } //记录冷启动成功时间 ColdStartConfig.setColdStartSuccessTime(System.currentTimeMillis()) @@ -274,19 +273,21 @@ class ColdStartProcessView @JvmOverloads constructor( } ivColdStartProcess.visibility = View.GONE ivColdStartResult.visibility = View.VISIBLE + failAlpha?.cancel() ivColdStartResult.setImageDrawable((ResourceUtils.getDrawable(R.drawable.icon_cold_start_success_02))) - val successAlpha: ObjectAnimator = ObjectAnimator.ofFloat(ivColdStartResult,"alpha",1f,0.5f) - successAlpha.duration = 500 - successAlpha.repeatMode = ValueAnimator.REVERSE - successAlpha.repeatCount = 6 - successAlpha.start() - successAlpha.addListener(object: Animator.AnimatorListener{ + successAlpha = ObjectAnimator.ofFloat(ivColdStartResult,"alpha",1f,0.5f) + successAlpha?.duration = 500 + successAlpha?.repeatMode = ValueAnimator.REVERSE + successAlpha?.repeatCount = 6 + successAlpha?.start() + successAlpha?.addListener(object: Animator.AnimatorListener{ override fun onAnimationStart(animation: Animator) { } override fun onAnimationEnd(animation: Animator) { ivColdStartResult.visibility = View.GONE + this@ColdStartProcessView.visibility = View.GONE } override fun onAnimationCancel(animation: Animator) { @@ -299,31 +300,6 @@ class ColdStartProcessView @JvmOverloads constructor( }) - -// var label = true -// coldStartSuccessTimer = object: CountDownTimer(COLD_START_SUCCESS_SHOW_TIME,COLD_START_SUCCESS_TICK_TIME){ -// override fun onTick(millisUntilFinished: Long) { -// ThreadUtils.runOnUiThread { -// label = if(label){ -// transition?.startTransition(500) -// false -// }else{ -// transition?.reverseTransition(500) -// true -// } -// } -// } -// -// override fun onFinish() { -// ThreadUtils.runOnUiThread { -// this@ColdStartProcessView.visibility = View.GONE -// coldStartProcessNormalAnim?.release() -// coldStartProcessAbnormalAnim?.release() -// } -// } -// -// } -// coldStartSuccessTimer?.start() } } @@ -340,12 +316,13 @@ class ColdStartProcessView @JvmOverloads constructor( } ivColdStartProcess.visibility = View.GONE ivColdStartResult.visibility = View.VISIBLE + successAlpha?.cancel() ivColdStartResult.setImageDrawable((ResourceUtils.getDrawable(R.drawable.icon_cold_start_fail_02))) - val failAlpha: ObjectAnimator = ObjectAnimator.ofFloat(ivColdStartResult,"alpha",1f,0.5f) - failAlpha.duration = 500 - failAlpha.repeatMode = ValueAnimator.REVERSE - failAlpha.repeatCount = ValueAnimator.INFINITE - failAlpha.start() + failAlpha = ObjectAnimator.ofFloat(ivColdStartResult,"alpha",1f,0.5f) + failAlpha?.duration = 500 + failAlpha?.repeatMode = ValueAnimator.REVERSE + failAlpha?.repeatCount = ValueAnimator.INFINITE + failAlpha?.start() } }