[6.5.0]当融合红绿灯展示时,其他来源的红绿灯视图隐藏

This commit is contained in:
xuxinchao
2024-07-19 18:12:15 +08:00
parent 4d0d422774
commit 2ef6bb6c80
4 changed files with 50 additions and 3 deletions

View File

@@ -169,6 +169,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
if(convert(light.state) == TrafficLightEnum.BLACK){
//隐藏当前红绿灯以及额外提示框
CallerTrafficLightListenerManager.disableTrafficLight()
CallerTrafficLightListenerManager.notifyFusionTrafficLightStatus(false)
hasFusionLightStatus = false
isPrompted = false
isTurnGreen = false
@@ -182,6 +183,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
if ((System.currentTimeMillis() - lastLightTime) > 1000) {
//隐藏红绿灯显示
hide("倒计时结束隐藏", DataSourceType.TELEMATIC_UNION_V2N)
CallerTrafficLightListenerManager.notifyFusionTrafficLightStatus(false)
lightCountDownTimer?.cancel()
lightCountDownTimer = null
hasFusionLightStatus = false
@@ -193,6 +195,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
override fun onFinish() {
//隐藏红绿灯显示
hide("倒计时结束隐藏", DataSourceType.TELEMATIC_UNION_V2N)
CallerTrafficLightListenerManager.notifyFusionTrafficLightStatus(false)
lightCountDownTimer?.cancel()
lightCountDownTimer = null
hasFusionLightStatus = false
@@ -214,6 +217,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
//当前灯态倒计时小于5S时展示额外的提示框
onTrafficLightPrompt(convert(light.state),light.duration,convert(light.nextState),light.nextDuration,
convert(light.nextTwoState),light.nextTwoDuration)
CallerTrafficLightListenerManager.notifyFusionTrafficLightStatus(true)
/**
* 司机端提示:
* 车辆等红灯,在红/黄灯剩余5s且下一灯态为绿灯时提示“红灯即将变绿”并在变为绿灯时有提示起步的动效

View File

@@ -46,6 +46,8 @@ class SingleTrafficLightView @JvmOverloads constructor(
private var mLightSourceDivider: View? = null
private var mCurrentLightId = TrafficLightEnum.BLACK
private var fusionTrafficLightState: Boolean = false //当前是否有融合红绿灯展示
private var trafficLightUser = 0 //0:默认1Taxi乘客屏肤色
init{
@@ -138,6 +140,24 @@ class SingleTrafficLightView @JvmOverloads constructor(
}
}
/**
* 获取融合红绿灯展示状态
* @param isVisible true展示 false不展示
*/
override fun notifyFusionTrafficLightStatus(isVisible: Boolean) {
super.notifyFusionTrafficLightStatus(isVisible)
if(fusionTrafficLightState != isVisible){
fusionTrafficLightState = isVisible
if(isVisible){
UiThreadHandler.post{
if(this@SingleTrafficLightView.visibility == View.VISIBLE){
this@SingleTrafficLightView.visibility = View.GONE
}
}
}
}
}
override fun disableTrafficLightCountDown() {
super.disableTrafficLightCountDown()
UiThreadHandler.post {
@@ -285,7 +305,9 @@ class SingleTrafficLightView @JvmOverloads constructor(
}else{
mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor)
}
this@SingleTrafficLightView.visibility = VISIBLE
if(!fusionTrafficLightState){
this@SingleTrafficLightView.visibility = VISIBLE
}
}
TrafficLightEnum.YELLOW -> {
if(trafficLightUser == 1){
@@ -293,7 +315,9 @@ class SingleTrafficLightView @JvmOverloads constructor(
}else{
mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor)
}
this@SingleTrafficLightView.visibility = VISIBLE
if(!fusionTrafficLightState){
this@SingleTrafficLightView.visibility = VISIBLE
}
}
TrafficLightEnum.GREEN -> {
if(trafficLightUser == 1){
@@ -301,7 +325,9 @@ class SingleTrafficLightView @JvmOverloads constructor(
}else{
mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor)
}
this@SingleTrafficLightView.visibility = VISIBLE
if(!fusionTrafficLightState){
this@SingleTrafficLightView.visibility = VISIBLE
}
}
else -> this@SingleTrafficLightView.visibility = GONE
}