diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/xiaozhimanager/ZhiViewmanager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/xiaozhimanager/ZhiViewmanager.kt index cbc5d9cfe8..a5cd6fd389 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/xiaozhimanager/ZhiViewmanager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/xiaozhimanager/ZhiViewmanager.kt @@ -11,14 +11,14 @@ object ZhiViewmanager { private var iViewCallbacks: IViewCallback? = null - val normalAni = AniData(1, R.array.xiaozhi_normal, false, true,true,12) - val listenerAni = AniData(2,R.array.xiaozhi_think,false,true,true,12) + val normalAni = AniData(1, R.array.xiaozhi_normal, false, true,12) + val listenerAni = AniData(2,R.array.xiaozhi_think,false,true,12) - val listener2Normal = AniData(3, R.array.xiaozhi_think_normal, true, false,true,24) - val normal2Listener = AniData(4, R.array.xiaozhi_think_normal, true, true,true,24) + val listener2Normal = AniData(3, R.array.xiaozhi_think_normal, true, false,24) + val normal2Listener = AniData(4, R.array.xiaozhi_think_normal, true, true,24) - val beltAni = AniData(5, R.array.xiaozhi_belt, false, true,true,12) - val loveAni = AniData(6, R.array.xiaozhi_love, false, true,true,12) + val beltAni = AniData(5, R.array.xiaozhi_belt, false, true,12) + val loveAni = AniData(6, R.array.xiaozhi_love, false, true,12) private var initAni = normalAni private var currentAni: AniData? = null @@ -66,7 +66,7 @@ object ZhiViewmanager { iViewCallbacks = null } - fun showListeningAni(aniData: AniData) { + fun showListeningAni(aniData: AniData,immediately:Boolean=true) { var lastAni = readQueue.peek() if(lastAni==null){ lastAni = currentAni @@ -83,9 +83,14 @@ object ZhiViewmanager { readQueue.offer(aniData) CallerLogger.d(TAG, "排队播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") }else{ - iViewCallbacks?.changeAniImmediately(aniData) - currentAni = aniData - CallerLogger.d(TAG, "立刻播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + if(immediately){ + iViewCallbacks?.changeAniImmediately(aniData) + currentAni = aniData + CallerLogger.d(TAG, "立刻播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + }else{ + readQueue.offer(aniData) + CallerLogger.d(TAG, "排队播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + } } } 2 -> {// 正在播放倾听中动画 @@ -96,16 +101,26 @@ object ZhiViewmanager { readQueue.offer(aniData) CallerLogger.d(TAG, "排队播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") }else{ - iViewCallbacks?.changeAniImmediately(aniData) - currentAni = aniData - CallerLogger.d(TAG, "立刻播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + if(immediately){ + iViewCallbacks?.changeAniImmediately(aniData) + currentAni = aniData + CallerLogger.d(TAG, "立刻播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + }else{ + readQueue.offer(aniData) + CallerLogger.d(TAG, "排队播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + } } } else -> { - iViewCallbacks?.changeAniImmediately(aniData) - currentAni = aniData - CallerLogger.d(TAG, "立刻播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + if(immediately){ + iViewCallbacks?.changeAniImmediately(aniData) + currentAni = aniData + CallerLogger.d(TAG, "立刻播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + } else { + readQueue.offer(aniData) + CallerLogger.d(TAG, "排队播放${Thread.currentThread().name}--${aniData.id}-${readQueue.size}") + } } } @@ -128,7 +143,6 @@ object ZhiViewmanager { val aniArrayId: Int,// 动画序列号 val isOnce: Boolean,// true 只播一次 false 循环播放 val sequence: Boolean,// true 正向播放 false 倒着播放 - val immediately:Boolean, val fps:Int ) { var aniList = FrameAnimatorContainer.getData(aniArrayId) diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateView.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateView.kt index d51fb1a765..023585036b 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateView.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateView.kt @@ -7,19 +7,25 @@ import android.animation.ValueAnimator import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.och.common.module.manager.xiaozhimanager.ZhiViewmanager import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.passenger.R +import com.mogo.och.taxi.passenger.ui.arrived.ArrivedViewModel +import com.mogo.och.taxi.passenger.ui.orderinfo.OrderInfoViewModel import kotlinx.android.synthetic.main.taxi_p_evaluate.view.iv_close import kotlinx.android.synthetic.main.taxi_p_evaluate.view.iv_evaluate_great import kotlinx.android.synthetic.main.taxi_p_evaluate.view.iv_evaluate_low import kotlinx.android.synthetic.main.taxi_p_evaluate.view.iv_taxt_p_greate_text -class EvaluateView : ConstraintLayout { +class EvaluateView : ConstraintLayout, EvaluateViewModel.EvaluateCallback { private val TAG = "EvaluateView" @@ -33,6 +39,8 @@ class EvaluateView : ConstraintLayout { private var isFirat = true + private lateinit var viewModel: EvaluateViewModel + private fun initView() { LayoutInflater.from(context).inflate(R.layout.taxi_p_evaluate, this, true) iv_evaluate_great.onClick { @@ -45,10 +53,12 @@ class EvaluateView : ConstraintLayout { VoiceNotice.showNotice("感谢您的认可,我们会再接再厉", AIAssist.LEVEL2) iv_taxt_p_greate_text.animate().alpha(1f).duration = 1000 // 小智爱心动作 + ZhiViewmanager.showListeningAni(ZhiViewmanager.loveAni) RxUtils.createSubscribe(3_000) { visibility = GONE - iv_taxt_p_greate_text.visibility = GONE + iv_taxt_p_greate_text.alpha = 0f // 小智回归默认动作 + ZhiViewmanager.showListeningAni(ZhiViewmanager.normalAni,false) } } }).duration = 1000 @@ -90,7 +100,10 @@ class EvaluateView : ConstraintLayout { override fun onAttachedToWindow() { super.onAttachedToWindow() - + val viewModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(EvaluateViewModel::class.java) + } + viewModel?.setViewCallback(this) } @@ -103,5 +116,13 @@ class EvaluateView : ConstraintLayout { } } + override fun showEvaluate(show: Boolean) { + if(show){ + visibility = VISIBLE + }else{ + visibility = GONE + } + } + } \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateViewModel.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateViewModel.kt new file mode 100644 index 0000000000..37325ac145 --- /dev/null +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/evaluate/EvaluateViewModel.kt @@ -0,0 +1,50 @@ +package com.mogo.och.taxi.passenger.ui.evaluate + +import androidx.lifecycle.ViewModel +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.utilcode.util.StringUtils +import com.mogo.och.common.module.manager.distancemamager.IDistanceListener +import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager +import com.mogo.och.taxi.passenger.model.TaxiPassengerModel + +class EvaluateViewModel : ViewModel(), IDistanceListener { + + private val TAG = EvaluateViewModel::class.java.simpleName + + private val orderShowEvaluate = "SHOWEVALUATE" + + private var viewCallback: EvaluateCallback? = null + + init { + TrajectoryAndDistanceManager.addDistanceListener(TAG, this) + } + + override fun distanceCallback(distance: Float) { + super.distanceCallback(distance) + if(distance<=500) { + TaxiPassengerModel.currentOCHOrder?.let { + val string = SharedPrefsMgr.getInstance().getString(orderShowEvaluate) + if (StringUtils.isEmpty(string) || !string.equals(it.orderNo)) { + this.viewCallback?.showEvaluate(true) + SharedPrefsMgr.getInstance().putString(orderShowEvaluate, it.orderNo) + } + } + } + + } + + fun setViewCallback(viewCallback: EvaluateCallback) { + this.viewCallback = viewCallback + } + + override fun onCleared() { + super.onCleared() + this.viewCallback = null + } + + + interface EvaluateCallback { + fun showEvaluate(show: Boolean) + + } +} \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml index 3049fca12f..b8be0d3d2f 100644 --- a/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -257,6 +257,7 @@ + +