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 3f71068566..140f923748 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,6 +7,7 @@ import android.view.View import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.enums.DataSourceType @@ -21,9 +22,8 @@ import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI -import com.mogo.eagle.core.utilcode.util.ThreadUtils.* import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import kotlinx.android.synthetic.main.hmi_view_traffic_light.view.* +import me.jessyan.autosize.utils.AutoSizeUtils /** * 新版红绿灯view @@ -39,11 +39,14 @@ class SingleTrafficLightView @JvmOverloads constructor( private const val TAG = "SingleTrafficLightView" } - private var mLightIconIV: ImageView? = null - private var mLightIconBG: ImageView? = null - private var mLightTimeTV: GradientTextView? = null - private var mLightSourceTV: TextView? = null - private var mLightSourceDivider: View? = null + private var mLightIconIV: ImageView? = null //红绿灯Icon + private var mLightIconBG: ImageView? = null //乘客屏红绿灯背景 + private var mTrafficLightClBG: ConstraintLayout ?= null //司机端红绿灯背景 + private var mLightTimeTV: TypefaceTextView ?= null //司机端红绿灯倒计时 + private var mLightTimeTVP: GradientTextView? = null //乘客屏红绿灯倒计时 + private var mLightSourceTV: TextView? = null //红绿灯来源 + private var mLightSourceDivider: View? = null //分割线 + private var mCurrentLightId = TrafficLightEnum.BLACK private var fusionTrafficLightState: Boolean = false //当前是否有融合红绿灯展示 @@ -52,8 +55,8 @@ class SingleTrafficLightView @JvmOverloads constructor( init{ context?.let { - val typedArray = it.obtainStyledAttributes(attrs, R.styleable.TrafficLightView) - trafficLightUser = typedArray.getInt(R.styleable.TrafficLightView_traffic_light_user,0) + val typedArray = it.obtainStyledAttributes(attrs, R.styleable.SingleTrafficLightView) + trafficLightUser = typedArray.getInt(R.styleable.SingleTrafficLightView_traffic_light_user,0) typedArray.recycle() } @@ -67,19 +70,24 @@ class SingleTrafficLightView @JvmOverloads constructor( LayoutInflater.from(context).inflate(R.layout.hmi_view_traffic_light, this, true) } mLightIconIV = findViewById(R.id.hmi_traffic_light_iv) - mLightIconBG = findViewById(R.id.hmi_traffic_light_bg) - mLightTimeTV = findViewById(R.id.hmi_traffic_light_time_tv) mLightSourceTV = findViewById(R.id.hmi_traffic_light_source) mLightSourceDivider = findViewById(R.id.hmi_traffic_light_divider) + if(trafficLightUser==1){ + mLightIconBG = findViewById(R.id.hmi_traffic_light_bg) + mLightTimeTVP = findViewById(R.id.hmi_traffic_light_time_tv_p) + }else{ + mTrafficLightClBG = findViewById(R.id.hmi_traffic_light_cl_bg) + mLightTimeTV = findViewById(R.id.hmi_traffic_light_time_tv) + } CallerSkinModeListenerManager.addListener(TAG, this) CallerTrafficLightListenerManager.addListener(TAG, this) CallerHmiViewControlListenerManager.addListener(TrafficLightView_TAG, this) if(trafficLightUser==1){ - hmi_traffic_light_bg.setBackgroundResource(R.drawable.traffic_light_bg_taxi_p) - hmi_traffic_light_source.setTextColor(ContextCompat.getColor(context,R.color.color_FF213757)) - hmi_traffic_light_divider.setBackgroundColor(ContextCompat.getColor(context,R.color.color_CC5C71AB)) + mLightIconBG?.setBackgroundResource(R.drawable.traffic_light_bg_taxi_p) + mLightSourceTV?.setTextColor(ContextCompat.getColor(context,R.color.color_FF213757)) + mLightSourceDivider?.setBackgroundColor(ContextCompat.getColor(context,R.color.color_CC5C71AB)) } } @@ -96,20 +104,7 @@ class SingleTrafficLightView @JvmOverloads constructor( } override fun onSkinModeChange(skinMode: Int) { - runOnUiThread { - when (skinMode) { - 0 -> { - hmi_traffic_light_bg.setBackgroundResource(R.drawable.traffic_light_bg) - hmi_traffic_light_source.setTextColor(ContextCompat.getColor(context,R.color.color_FFFFFF)) - hmi_traffic_light_divider.setBackgroundColor(ContextCompat.getColor(context,R.color.color_FFFFFF)) - } - 1 -> { - hmi_traffic_light_bg.setBackgroundResource(R.drawable.traffic_light_bg_day_light) - hmi_traffic_light_source.setTextColor(ContextCompat.getColor(context,R.color.color_2D3E5F)) - hmi_traffic_light_divider.setBackgroundColor(ContextCompat.getColor(context,R.color.color_2D3E5F)) - } - } - } + //TODO 670版本UI改版没有设计白天黑夜模式,暂时关闭 } /** @@ -158,30 +153,27 @@ class SingleTrafficLightView @JvmOverloads constructor( } } + /** + * 关闭红绿灯计数 + */ override fun disableTrafficLightCountDown() { super.disableTrafficLightCountDown() UiThreadHandler.post { - // 小巴车的司机端需要展示红绿灯信号来源 -// 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() -// }else{ -// val lp = this.layoutParams as MarginLayoutParams -// lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_icon_size).toInt() -// this.layoutParams = lp -// mLightTimeTV!!.visibility = GONE -// mLightSourceDivider!!.visibility = View.GONE -// mLightSourceTV!!.visibility = View.GONE -// mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.dp_124).toInt() -// } + if(trafficLightUser==1){ + //乘客屏 + 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 + mLightTimeTVP?.visibility = GONE + mLightSourceTV?.setPadding(0, 0, 75, 0) + mLightIconBG?.layoutParams?.width = + context.resources.getDimension(R.dimen.dp_310).toInt() + }else{ + //司机屏 + //TODO + } } } @@ -198,7 +190,13 @@ class SingleTrafficLightView @JvmOverloads constructor( TrafficLightEnum.RED -> changeCountdownRed(redNum) TrafficLightEnum.YELLOW -> changeCountdownYellow(yellowNum) TrafficLightEnum.GREEN -> changeCountdownGreen(greenNum) - else -> UiThreadHandler.post { mLightTimeTV!!.text = "" } + else -> UiThreadHandler.post { + if(trafficLightUser == 1){ + mLightTimeTVP?.text = "" + }else{ + mLightTimeTV?.text = "" + } + } } } } @@ -208,27 +206,25 @@ class SingleTrafficLightView @JvmOverloads constructor( UiThreadHandler.post { if (redNum > 0) { resetView() - mLightTimeTV!!.setVertical(true) if(trafficLightUser == 1){ - mLightTimeTV!!.setColorList( + mLightTimeTVP?.setVertical(true) + mLightTimeTVP?.setColorList( intArrayOf( ContextCompat.getColor(context,R.color.color_FF384D6E), ContextCompat.getColor(context,R.color.color_FF384D6E) ) ) + mLightTimeTVP?.text = redNum.toString() }else{ - mLightTimeTV!!.setColorList( - intArrayOf( - ContextCompat.getColor(context,R.color.hmi_traffic_light_red_color_up), - ContextCompat.getColor(context,R.color.hmi_traffic_light_red_color_down) - ) - ) + mLightTimeTV?.text = redNum.toString() } - - mLightTimeTV!!.text = redNum.toString() } else { disableTrafficLightCountDown() - mLightTimeTV!!.text = "" + if(trafficLightUser == 1){ + mLightTimeTVP?.text = "" + }else{ + mLightTimeTV?.text = "" + } } } } @@ -238,26 +234,26 @@ class SingleTrafficLightView @JvmOverloads constructor( UiThreadHandler.post { if (greenNum > 0) { resetView() - mLightTimeTV!!.setVertical(true) if(trafficLightUser == 1){ - mLightTimeTV!!.setColorList( + mLightTimeTVP?.setVertical(true) + mLightTimeTVP?.setColorList( intArrayOf( ContextCompat.getColor(context,R.color.color_FF384D6E), ContextCompat.getColor(context,R.color.color_FF384D6E) ) ) + mLightTimeTVP?.text = greenNum.toString() }else{ - mLightTimeTV!!.setColorList( - intArrayOf( - ContextCompat.getColor(context,R.color.hmi_traffic_light_green_color_up), - ContextCompat.getColor(context,R.color.hmi_traffic_light_green_color_down) - ) - ) + mLightTimeTV?.text = greenNum.toString() } - mLightTimeTV!!.text = greenNum.toString() + } else { disableTrafficLightCountDown() - mLightTimeTV!!.text = "" + if(trafficLightUser == 1){ + mLightTimeTVP!!.text = "" + }else{ + mLightTimeTV!!.text = "" + } } } } @@ -267,26 +263,25 @@ class SingleTrafficLightView @JvmOverloads constructor( UiThreadHandler.post { if (yellowNum > 0) { resetView() - mLightTimeTV!!.setVertical(true) if(trafficLightUser == 1){ - mLightTimeTV!!.setColorList( + mLightTimeTVP?.setVertical(true) + mLightTimeTVP?.setColorList( intArrayOf( ContextCompat.getColor(context,R.color.color_FF384D6E), ContextCompat.getColor(context,R.color.color_FF384D6E) ) ) + mLightTimeTVP?.text = yellowNum.toString() }else{ - mLightTimeTV!!.setColorList( - intArrayOf( - ContextCompat.getColor(context,R.color.hmi_traffic_light_yellow_color_up), - ContextCompat.getColor(context,R.color.hmi_traffic_light_yellow_color_down) - ) - ) + mLightTimeTV?.text = yellowNum.toString() } - mLightTimeTV!!.text = yellowNum.toString() } else { disableTrafficLightCountDown() - mLightTimeTV!!.text = "" + if(trafficLightUser == 1){ + mLightTimeTVP?.text = "" + }else{ + mLightTimeTV?.text = "" + } } } } @@ -332,50 +327,56 @@ class SingleTrafficLightView @JvmOverloads constructor( else -> this@SingleTrafficLightView.visibility = GONE } when (lightSource) { + //TODO 司机屏展示来源需要更改文案 DataSourceType.AICLOUD -> { - mLightSourceTV!!.text = context.getString(R.string.light_source_ai_cloud) + if(trafficLightUser == 1){ + mLightSourceTV?.text = context.getString(R.string.light_source_ai_cloud) + }else{ + mLightSourceTV?.text = context.getString(R.string.light_source_driver_ai_cloud) + } } + DataSourceType.TELEMATIC_UNION_V2I, + DataSourceType.TELEMATIC_UNION_V2N, DataSourceType.TELEMATIC -> { - mLightSourceTV!!.text = context.getString(R.string.light_source_perception) - } - DataSourceType.TELEMATIC_UNION_V2I -> { - mLightSourceTV!!.text = context.getString(R.string.light_source_perception_v2i) - } - DataSourceType.TELEMATIC_UNION_V2N -> { - mLightSourceTV!!.text = context.getString(R.string.light_source_perception_v2n) + if(trafficLightUser == 1){ + mLightSourceTV?.text = context.getString(R.string.light_source_perception) + }else{ + mLightSourceTV?.text = context.getString(R.string.light_source_driver_perception) + } } DataSourceType.OBU -> { - mLightSourceTV!!.text = context.getString(R.string.light_source_obu) + if(trafficLightUser == 1){ + mLightSourceTV?.text = context.getString(R.string.light_source_obu) + }else{ + mLightSourceTV?.text = context.getString(R.string.light_source_driver_obu) + mLightSourceTV?.textSize = AutoSizeUtils.sp2px(context, 23f).toFloat() + mLightSourceTV?.setLineSpacing(0f, 1.0f) + } } else -> { - mLightSourceTV!!.visibility = GONE + mLightSourceTV?.visibility = GONE } } } 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() -// }else{ -// val lp = this.layoutParams as MarginLayoutParams -// lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_layout_width).toInt() -// this.layoutParams = lp -// mLightTimeTV!!.visibility = View.VISIBLE -// mLightSourceDivider!!.visibility = View.GONE -// mLightSourceTV!!.visibility = View.GONE -// mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bg_width).toInt() -// } + if(trafficLightUser == 1){ + //乘客屏 + 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{ + //司机屏 + //TODO + + } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_green_nor.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_green_nor.png index bc9fed952d..aff66435ee 100644 Binary files a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_green_nor.png and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_green_nor.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_red_nor.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_red_nor.png index 8732508ded..0ccd2bf40b 100644 Binary files a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_red_nor.png and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_light_red_nor.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_lightyellow_nor.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_lightyellow_nor.png index bae01408fd..04cab62b4a 100644 Binary files a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_lightyellow_nor.png and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/hmi_lightyellow_nor.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light.xml index b7667cf45c..4bda39f7de 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light.xml @@ -1,60 +1,58 @@ - - + android:id="@+id/hmi_traffic_light_cl_bg" + android:layout_width="@dimen/dp_368" + android:layout_height="@dimen/dp_180" + android:background="@drawable/icon_single_traffic_light_bg" + > - - + + + + - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light_taxi_p.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light_taxi_p.xml index 7845671a6b..5289aecff1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light_taxi_p.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_traffic_light_taxi_p.xml @@ -28,7 +28,7 @@ /> - + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index d5639346ad..c1aa415cc0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -102,10 +102,13 @@ 红绿灯灯态 云端下发 + 云\n端 自车感知 + 自\n车 融合V2I 融合V2N \u2000OBU\u2000 + O\nB\nU 远程代驾 请求中... 同步中...