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 @@
+
+