diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt index 5eeae227da..77a32e388a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt @@ -4,6 +4,7 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.view.View +import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import com.mogo.eagle.core.data.enums.DataSourceType @@ -13,14 +14,6 @@ import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightBg -import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightNum -import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightPointer -import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightProportion -import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightScale -import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightState -import java.util.LinkedList - /** * 融合红绿灯View * 鹰眼6.5.0版本需求 @@ -42,6 +35,12 @@ class FusionTrafficLightView @JvmOverloads constructor( private var maxYellowDuration = 0 //黄灯最长时间 private var maxRedDuration = 0 //红灯最长时间 + private var fusionTrafficLightNum: TypefaceTextView ?=null //融合红绿灯倒计时 + private var fusionTrafficLightState: ImageView ?= null //融合红绿灯灯态 + private var fusionTrafficLightScale: ImageView ?= null //融合红绿灯刻度 + private var fusionTrafficLightPointer: ImageView ?= null //融合红绿灯指针 + private var fusionTrafficLightProportion: ProportionChartView ?= null //占比进度条 + init { val typedArray = context.obtainStyledAttributes(attrs, R.styleable.FusionTrafficLightView) @@ -51,13 +50,17 @@ class FusionTrafficLightView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() - LayoutInflater.from(context).inflate(R.layout.hmi_view_fusion_traffic_light, this, true) - CallerTrafficLightListenerManager.addListener(TAG, this) if(user == 0){ - fusionTrafficLightBg.setBackgroundResource(R.drawable.bg_fusion_traffic_light) + LayoutInflater.from(context).inflate(R.layout.hmi_view_fusion_traffic_light, this, true) }else{ - fusionTrafficLightBg.setBackgroundResource(R.drawable.bg_fusion_traffic_light_p) + LayoutInflater.from(context).inflate(R.layout.hmi_view_fusion_traffic_light_p, this, true) } + CallerTrafficLightListenerManager.addListener(TAG, this) + fusionTrafficLightNum = findViewById(R.id.fusionTrafficLightNum) + fusionTrafficLightState = findViewById(R.id.fusionTrafficLightState) + fusionTrafficLightScale = findViewById(R.id.fusionTrafficLightScale) + fusionTrafficLightPointer = findViewById(R.id.fusionTrafficLightPointer) + fusionTrafficLightProportion = findViewById(R.id.fusionTrafficLightProportion) } override fun onDetachedFromWindow() { @@ -111,10 +114,10 @@ class FusionTrafficLightView @JvmOverloads constructor( } TrafficLightEnum.YELLOW -> { proportionList.add(1,currentDuration) - if(currentDuration < 3){ - maxYellowDuration = 3 + maxYellowDuration = if(currentDuration < 3){ + 3 }else{ - maxYellowDuration = currentDuration + currentDuration } } else -> { @@ -129,10 +132,10 @@ class FusionTrafficLightView @JvmOverloads constructor( } TrafficLightEnum.YELLOW -> { proportionList.add(1,nextDuration) - if(nextDuration<3){ - maxYellowDuration = 3 + maxYellowDuration = if(nextDuration<3){ + 3 }else{ - maxYellowDuration = nextDuration + nextDuration } } else -> { @@ -147,10 +150,10 @@ class FusionTrafficLightView @JvmOverloads constructor( } TrafficLightEnum.YELLOW -> { proportionList.add(1,nextTwoDuration) - if(nextTwoDuration<3){ - maxYellowDuration = 3 + maxYellowDuration = if(nextTwoDuration<3){ + 3 }else{ - maxYellowDuration = nextTwoDuration + nextTwoDuration } } else -> { @@ -158,48 +161,47 @@ class FusionTrafficLightView @JvmOverloads constructor( maxRedDuration = nextTwoDuration } } - fusionTrafficLightProportion.updateProportion(proportionList) + fusionTrafficLightProportion?.updateProportion(proportionList) totalDuration = maxGreenDuration + maxYellowDuration + maxRedDuration } //根据当前灯态设置转盘、刻度、指针背景 when(currentState){ TrafficLightEnum.GREEN -> { - fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green)) - fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_scale)) - fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_pointer)) + fusionTrafficLightState?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green)) + fusionTrafficLightScale?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_scale)) + fusionTrafficLightPointer?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_pointer)) } TrafficLightEnum.YELLOW -> { - fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow)) - fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_scale)) - fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_pointer)) + fusionTrafficLightState?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow)) + fusionTrafficLightScale?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_scale)) + fusionTrafficLightPointer?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_pointer)) } else -> { - fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red)) - fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_scale)) - fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_pointer)) + fusionTrafficLightState?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red)) + fusionTrafficLightScale?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_scale)) + fusionTrafficLightPointer?.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_pointer)) } } //更新当前灯态倒计时时间 if(currentDuration>0){ - fusionTrafficLightNum.text = currentDuration.toString() + fusionTrafficLightNum?.text = currentDuration.toString() }else{ - fusionTrafficLightNum.text = "0" + fusionTrafficLightNum?.text = "0" } //当时间为1开头时时间视觉上看不是左右居中对齐,需要做便宜操作 if(currentDuration.toString().startsWith("1")){ - val numLayoutParams = fusionTrafficLightNum.layoutParams as LayoutParams - numLayoutParams.rightMargin = 10 - fusionTrafficLightNum.layoutParams = numLayoutParams + val numLayoutParams = fusionTrafficLightNum?.layoutParams as LayoutParams + numLayoutParams.rightMargin = 6 + fusionTrafficLightNum?.layoutParams = numLayoutParams }else{ - val numLayoutParams = fusionTrafficLightNum.layoutParams as LayoutParams + val numLayoutParams = fusionTrafficLightNum?.layoutParams as LayoutParams numLayoutParams.rightMargin = 0 - fusionTrafficLightNum.layoutParams = numLayoutParams + fusionTrafficLightNum?.layoutParams = numLayoutParams } //更新指针指向 - val pointerLayoutParams = fusionTrafficLightPointer.layoutParams as LayoutParams - var currentAngle = 0f - currentAngle = when (currentState) { + val pointerLayoutParams = fusionTrafficLightPointer?.layoutParams as LayoutParams + val currentAngle = when (currentState) { TrafficLightEnum.GREEN -> { 360f*(maxGreenDuration-currentDuration)/totalDuration } @@ -213,8 +215,8 @@ class FusionTrafficLightView @JvmOverloads constructor( } } pointerLayoutParams.circleAngle = currentAngle - fusionTrafficLightPointer.rotation = currentAngle - fusionTrafficLightPointer.layoutParams = pointerLayoutParams + fusionTrafficLightPointer?.rotation = currentAngle + fusionTrafficLightPointer?.layoutParams = pointerLayoutParams } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ProportionChartView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ProportionChartView.java index 56c67650ad..71facc3ca9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ProportionChartView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ProportionChartView.java @@ -9,7 +9,6 @@ import android.graphics.Paint; import android.graphics.RectF; import android.graphics.SweepGradient; import android.util.AttributeSet; -import android.util.Log; import android.view.View; import androidx.annotation.Nullable; import com.mogo.eagle.core.function.hmi.R; @@ -132,7 +131,6 @@ public class ProportionChartView extends View { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - Log.i("xuxinchao","onDraw canvas"); drawRingView(canvas); } @@ -140,7 +138,6 @@ public class ProportionChartView extends View { * 画Ring */ private void drawRingView(Canvas canvas){ - Log.i("xuxinchao","drawRingView 画Ring"); float sweepAngle = 0f; float startAngle = -90f; //矩形坐标 @@ -176,7 +173,7 @@ public class ProportionChartView extends View { } mRingPaint.setShader(sweepGradient); //画圆环 - canvas.drawArc(mRectF, startAngle, sweepAngle - 2, false, mRingPaint); + canvas.drawArc(mRectF, startAngle, sweepAngle, false, mRingPaint); } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml index 899b894680..ec37040a26 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml @@ -3,9 +3,9 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fusionTrafficLightBg" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@drawable/bg_fusion_traffic_light_p" + android:layout_width="@dimen/dp_200" + android:layout_height="@dimen/dp_200" + android:background="@drawable/bg_fusion_traffic_light" > + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml index b62e693de6..ddf9505f38 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml @@ -35,7 +35,7 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toBottomOf="@id/tvPromptContent" android:layout_marginRight="@dimen/dp_15" - android:textSize="@dimen/sp_40" + android:textSize="@dimen/sp_48" android:textColor="@color/light_prompt_red" app:textType="DS_DIGIB_2" /> @@ -44,8 +44,10 @@ android:id="@+id/tvTrafficNum" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="@id/tvTrafficNumDecimal" + app:layout_constraintTop_toTopOf="parent" app:layout_constraintRight_toLeftOf="@id/tvTrafficNumDecimal" + android:layout_marginTop="@dimen/dp_26" + android:layout_marginRight="@dimen/dp_2" android:textSize="@dimen/sp_90" android:textColor="@color/light_prompt_red" app:textType="DS_DIGIB_2" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml index 1eb0ad5102..b7414081e7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml @@ -13,30 +13,31 @@ app:layout_constraintLeft_toLeftOf="parent" android:textSize="@dimen/sp_32" android:textColor="@color/light_prompt_content" - android:layout_marginTop="@dimen/dp_50" - android:layout_marginStart="@dimen/dp_50" + android:layout_marginTop="@dimen/dp_55" + android:layout_marginStart="@dimen/dp_70" /> \ No newline at end of file diff --git a/core/mogo-core-res/src/main/res/values/dimens.xml b/core/mogo-core-res/src/main/res/values/dimens.xml index 2bfd230ee7..47d642104f 100644 --- a/core/mogo-core-res/src/main/res/values/dimens.xml +++ b/core/mogo-core-res/src/main/res/values/dimens.xml @@ -1079,6 +1079,7 @@ 48dp 52dp 55dp + 69dp 72dp 76dp 90dp