From cc408649c46980934edddbb7cc6cf882a5fec3f9 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 20 Apr 2023 11:10:10 +0800 Subject: [PATCH] [2.15.0] fix bug of traffic light sync --- .../hmi/ui/widget/SingleTrafficLightView.kt | 103 +++++++++--------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt index fd5a0ebbf1..434d3cee65 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt @@ -7,17 +7,15 @@ import android.view.View import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView -import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG -import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler /** @@ -72,9 +70,11 @@ class SingleTrafficLightView @JvmOverloads constructor( */ override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) { super.showTrafficLight(checkLightId, lightSource) - mCurrentLightId = checkLightId - if (!HmiBuildConfig.isShowTrafficLightView) { - updateTrafficLightIcon(checkLightId, lightSource) + UiThreadHandler.post { + mCurrentLightId = checkLightId + if (!HmiBuildConfig.isShowTrafficLightView) { + updateTrafficLightIcon(checkLightId, lightSource) + } } } @@ -95,14 +95,15 @@ class SingleTrafficLightView @JvmOverloads constructor( // 小巴车的司机端需要展示红绿灯信号来源 // if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) // && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ - val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.dp_325).toInt() - this.layoutParams = lp - mLightSourceTV!!.visibility = VISIBLE - mLightSourceDivider!!.visibility = VISIBLE - mLightTimeTV!!.visibility = GONE - mLightSourceTV!!.setPadding(0,0,75,0) - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.dp_310).toInt() + val lp = this.layoutParams as MarginLayoutParams + lp.width = context.resources.getDimension(R.dimen.dp_325).toInt() + this.layoutParams = lp + mLightSourceTV!!.visibility = VISIBLE + mLightSourceDivider!!.visibility = VISIBLE + mLightTimeTV!!.visibility = GONE + mLightSourceTV!!.setPadding(0, 0, 75, 0) + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.dp_310).toInt() // }else{ // val lp = this.layoutParams as MarginLayoutParams // lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_icon_size).toInt() @@ -200,51 +201,51 @@ class SingleTrafficLightView @JvmOverloads constructor( * @param lightSource 1:云端下发;2:自车感知; 3:OBU */ private fun updateTrafficLightIcon(lightId: TrafficLightEnum, lightSource: DataSourceType) { - UiThreadHandler.post { - when (lightId) { - TrafficLightEnum.RED -> { - mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor) - this@SingleTrafficLightView.visibility = VISIBLE - } - TrafficLightEnum.YELLOW -> { - mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor) - this@SingleTrafficLightView.visibility = VISIBLE - } - TrafficLightEnum.GREEN -> { - mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor) - this@SingleTrafficLightView.visibility = VISIBLE - } - else -> this@SingleTrafficLightView.visibility = GONE + when (lightId) { + TrafficLightEnum.RED -> { + mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor) + this@SingleTrafficLightView.visibility = VISIBLE } - when (lightSource) { - DataSourceType.AICLOUD -> { - mLightSourceTV!!.text = "云端下发" - } - DataSourceType.TELEMATIC -> { - mLightSourceTV!!.text = "自车感知" - } - DataSourceType.OBU -> { - mLightSourceTV!!.text = "OBU" - } - else -> { - mLightSourceTV!!.visibility = GONE - } + TrafficLightEnum.YELLOW -> { + mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor) + this@SingleTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.GREEN -> { + mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor) + this@SingleTrafficLightView.visibility = VISIBLE + } + else -> this@SingleTrafficLightView.visibility = GONE + } + when (lightSource) { + DataSourceType.AICLOUD -> { + mLightSourceTV!!.text = "云端下发" + } + DataSourceType.TELEMATIC -> { + mLightSourceTV!!.text = "自车感知" + } + DataSourceType.OBU -> { + mLightSourceTV!!.text = "OBU" + } + else -> { + mLightSourceTV!!.visibility = GONE } } } - private fun resetView(){ + private fun resetView() { // 小巴车的司机端需要展示红绿灯信号来源 ,由于需要知道来源,这里不在限制 // if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) // && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ - val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bus_layout_width).toInt() - this.layoutParams = lp - mLightTimeTV!!.visibility = View.VISIBLE - mLightSourceDivider!!.visibility = View.VISIBLE - mLightSourceTV!!.visibility = View.VISIBLE - mLightSourceTV!!.setPadding(0,0,0,0) - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bus_bg_width).toInt() + val lp = this.layoutParams as MarginLayoutParams + lp.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bus_layout_width).toInt() + this.layoutParams = lp + mLightTimeTV!!.visibility = View.VISIBLE + mLightSourceDivider!!.visibility = View.VISIBLE + mLightSourceTV!!.visibility = View.VISIBLE + mLightSourceTV!!.setPadding(0, 0, 0, 0) + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bus_bg_width).toInt() // }else{ // val lp = this.layoutParams as MarginLayoutParams // lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_layout_width).toInt()