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