From c8d13b4e45c4172c50f48812041c9cf53479a81c Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 18 Sep 2024 12:05:17 +0800 Subject: [PATCH] =?UTF-8?q?[6.7.0][=E8=BD=A6=E9=80=9F]=20=E8=BD=A6?= =?UTF-8?q?=E9=80=9FUI=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/bone/BoneTopStatusLayout.kt | 15 ++++++- .../hmi/bone/status/speed/SpeedView.kt | 38 ++++++++++++++++++ .../src/main/res/layout/layout_speed_view.xml | 25 ++++++++++++ .../main/res/layout/view_bone_top_status.xml | 9 +++++ .../layout/view_start_autopilot_status.xml | 1 + .../icon_status_route_download_failed.png | Bin 832 -> 1806 bytes 6 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/status/speed/SpeedView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_speed_view.xml 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 2df85fe783a48b85e383d3bf6ef4e5e642083c6a..dcdbeeb94541b09e143aab45bd2c5906d6c9d324 100644 GIT binary patch delta 1698 zcmZXVdpOgJAIE1iX*QCfgE+r9J?ofTa!DN{_Y_Tqer|IOC1;ux@nuWuu$G)$VwtmY z$!$htF3p+4(Xh>JF_&C(Hbc22w~qgQ=l7iVKcDCIem;ME{`fraH(TzJ;^SmM?zW4) z?WNl?QYw#vbU=0n7(7@^<_;nj1eXnCRNVD`WjDM=(lAF+S9M@K(>{K z!kM-Zz2|IAy~t(Oe+q=5UfHBHyajJ};Ym`3251Uz*zZqx3Az*RiL=wp2HfjRHF0i zC$l_@TK#v5-2_rr=4?C**7lQeSftP?d)hC#+HKL=a|OZ?d~bfeNA$*;cEvkHR5%nq zBjyc7KU!dS^Qn#`kYv2L1GqP&IAlfkzDW&x!wT8w*jxHEA4n#~;mr_r^$fnnG`-xn zI982aDixRb#EsZ))rsb76wsf^Ed6_2}3aS^QOQ)RR$XvQhjUTxclzlj+8kb9D3c`%cl=%0^QI-ABS0vr0H{wGmr- z2lTuJ)>@rhUv!N|V}@ z`Dk*8!in~Wzy_nKT72&1Nbg+x$gGk3>lAk4qyQNOehx#|xJH!}#gW`G=sj9?ftx?h_p=n@(ch_uhU?NtdOGTo<( zf9XUF7?osl{vK3(}i;@gCi1rp3b4xI$6<|iej=v(A4(q7w~g;PF(CEAmAGM#c;vi z1swR^LjEZP*}o#@sMv%{FH3QZT}+x|#n-?{4U>#K*NTK#K|A%WsVp%4WyQ39ah&jN z=G`K>SM5u0z@6Ak-E*QrE%wM}?r~t<&?GcC?LrPnKjSx$3NH27h1{ltf#3>bDC}m# zhP+r>AF$apeCcy3yzwb&c`(`K&!&wLSIs7x@ l{~hZ8s{u`@eaa$iTgfd)wfaNDt7y=kTpZl&tIptve**~+JuLtL literal 832 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{OJ#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1gS-^~7gB1R}eM^pkfoYYei(^Oy zO}xh>XtvEI4^cGrH!J-_5W z`=>|jb-iltjNO~BO(>muKdpMX?$_(V2DcYyzkR&rO5OE&#oNmcGJT#eKEu#7sk?8b z?U|_kKiwVgMm^s(>33xKx)qOtymaU2>Z1?J8*VboypWS(G zaoxLz6FoLMSBbVIoc9);w%K_Sm-B|_OSw+pRP=0Byzx1x_34`lOAZOVsa$!esLUfM zk>lH*kVH#sm6Zl8)p4sf%#ocGBGF{49~yCv&r^%%;JoQtI_d2yL)f^K?}uLfzj(gt zB7;+T>!o+CqLZf^X4+@#Yj1FNJ6E-uY18KUmzdtYUQx&S;vwJfKU?o_t-HG@dE(yh z3U5j$YRk%Ray|Zo@7t!RewX;DTeHthdY0X2J>^;V_Ug&c>Qo6Pr4Rm0_jiUf?K=Eq R&L2?f^>p=fS?83{1OR3CS_J?A