diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt index e41748556a..a252cb2960 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTopStatusLayout.kt @@ -7,12 +7,16 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.bone.status.StartAutoPilotStatusView +import com.zhjt.mogo_core_function_devatools.status.StatusManager +import com.zhjt.mogo_core_function_devatools.status.entity.SpeedStatus +import com.zhjt.mogo_core_function_devatools.status.entity.Status +import kotlinx.android.synthetic.main.view_bone_top_status.view.speed_custom import kotlinx.android.synthetic.main.view_bone_top_status.view.topStatusContainer class BoneTopStatusLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), - StartAutoPilotStatusView.IStartAutoPilotStatusChanged { + StartAutoPilotStatusView.IStartAutoPilotStatusChanged, StatusManager.IStatusListener { companion object { const val TAG = "BoneTopStatusLayout" @@ -25,11 +29,20 @@ class BoneTopStatusLayout @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() StartAutoPilotStatusView.addStatusChangedListener(TAG, this) + StatusManager.addListener(TAG, this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() StartAutoPilotStatusView.removeStatusChangedListener(TAG) + StatusManager.removeListener(TAG) + } + + override fun onStatusChanged(changed: List, all: List) { + changed.find { it is SpeedStatus }?.also { + val speed = it as SpeedStatus + speed_custom?.updateSpeed(speed.speed) + } } override fun onStatusError() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt new file mode 100644 index 0000000000..4fb37b98e6 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt @@ -0,0 +1,38 @@ +package com.mogo.eagle.core.function.hmi.bone.status.speed + +import android.content.Context +import android.graphics.Color +import android.graphics.LinearGradient +import android.graphics.Shader +import android.graphics.Shader.TileMode.CLAMP +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import android.widget.LinearLayout +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.scope +import kotlinx.android.synthetic.main.layout_speed_view.view.tv_speed +import kotlinx.coroutines.launch + +class SpeedView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + LinearLayout(context, attrs, defStyleAttr) { + + companion object { + private const val TAG = "SpeedView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.layout_speed_view, this, true) + } + + fun updateSpeed(speed: Int) { + tv_speed?.post { + tv_speed?.also { + Log.d(TAG, "--- (${it.width},${it.height})") + it.paint.shader = LinearGradient(it.width.toFloat() / 2.0f, 0f, it.width.toFloat() / 2.0f, it.height.toFloat(), Color.parseColor("#19FFCB"), Color.parseColor("#1970FF"), CLAMP) + it.text = "$speed" + } + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml new file mode 100644 index 0000000000..e631fa1cd7 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml index c76c7340b7..96f62d0f35 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_top_status.xml @@ -6,6 +6,15 @@ android:layout_height="@dimen/dp_357" android:background="@drawable/bg_top_status_layout_normal"> + + diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/icon_status_route_download_failed.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/icon_status_route_download_failed.png index 2df85fe783..dcdbeeb945 100644 Binary files a/core/mogo-core-res/src/main/res/drawable-xhdpi/icon_status_route_download_failed.png and b/core/mogo-core-res/src/main/res/drawable-xhdpi/icon_status_route_download_failed.png differ