[8.2.2][feat]新增B2美化呈现UI开发

This commit is contained in:
xinfengkun
2025-09-08 10:29:28 +08:00
parent ee303ec357
commit bb2d4996fc
15 changed files with 146 additions and 28 deletions

View File

@@ -94,4 +94,8 @@ public class LanSocketManagerJava implements IReceivedMsgListener {
public void onFusionColor(boolean fusionColor) {
}
@Override
public void onB2DemoMode(boolean isB2DemoMode) {
}
}

View File

@@ -4,12 +4,18 @@ import android.content.Context
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.content.ContextCompat
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.shuttle.weaknet.passenger.R
import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback
import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel
class StatusView : AppCompatTextView, ICommonCallback {
class StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
private val TAG = "ItineraryView"
@@ -17,31 +23,94 @@ class StatusView : AppCompatTextView, ICommonCallback {
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
context,
attributeSet,
defStyleAttr
)
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerTelematicListenerManager.addListener(TAG, this)
CommonModel.setRouteLineInfoCallback(TAG, this)
updateAutoIconState(0)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerTelematicListenerManager.removeListener(TAG)
CommonModel.setRouteLineInfoCallback(TAG, null)
}
private fun initView() {
}
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if(isVisible){
CommonModel.setRouteLineInfoCallback(TAG,this)
}else{
CommonModel.setRouteLineInfoCallback(TAG,null)
override fun onB2DemoMode(isB2DemoMode: Boolean) {
super.onB2DemoMode(isB2DemoMode)
updateAutoIconState(1)
}
//美化模式状态变更回调
override fun onDemoMode(isDemoMode: Boolean) {
super.onDemoMode(isDemoMode)
updateAutoIconState(2)
}
override fun updateInOrderStatus(inOrder: Boolean) {
super.updateInOrderStatus(inOrder)
updateAutoIconState(3)
}
//自动驾驶状态变更
override fun updateAutoStatus(state: Int) {
updateAutoIconState(4)
}
private fun getStateIcon(source: Int): Int {
// 平行驾驶状态下
val sourceStr = when (source) {
0 -> "View初始化"
1 -> "B2美化模式状态变更"
2 -> "美化模式状态变更"
3 -> "订单状态变更"
4 -> "自动驾驶状态变更"
else -> "错误"
}
val autopilotState = CallerAutoPilotStatusListenerManager.getState()
CallerLogger.i(
TAG,
"数据刷新来源=$sourceStr 自动驾驶状态=${autopilotState} 订单状态=${CommonModel.inOrder} 美化模式状态=${FunctionBuildConfig.isDemoMode} B2美化模式状态=${FunctionBuildConfig.isB2DemoMode} "
)
if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == autopilotState) {
return R.drawable.m2_status_parallel
}
// 处理非平行驾驶状态的情况
return when {
// 无订单的情况
!CommonModel.inOrder -> {
R.drawable.m2_status_basic
}
// 有订单且美化状态和b2美化状态任意开着
CommonModel.inOrder && (FunctionBuildConfig.isDemoMode || FunctionBuildConfig.isB2DemoMode) -> {
R.drawable.m2_status_order_auto
}
// 有订单且美化状态和b2美化状态都关着
CommonModel.inOrder && !FunctionBuildConfig.isDemoMode && !FunctionBuildConfig.isB2DemoMode -> {
if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.drawable.m2_status_order_auto else R.drawable.m2_status_basic
}
// 覆盖所有可能的情况
else -> R.drawable.m2_status_basic
}
}
override fun updateAutoStatus(isAutoPilot: Boolean) {
private fun updateAutoIconState(source: Int) {
BizLoopManager.runInMainThread {
context?.let {
if (isAutoPilot) {
setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF))
background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_in)
} else {
setTextColor(ContextCompat.getColor(it, R.color.common_284F7E))
background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_out)
}
setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF))
background = ContextCompat.getDrawable(it, getStateIcon(source))
}
}
}

View File

@@ -20,6 +20,8 @@ public interface ICommonCallback {
*/
default void updateAutoStatus(boolean isOpen){}
default void updateAutoStatus(int state){}
default void updateInOrderStatus(boolean inOrder){}
default void updateLineStations(List<BusStationBean> stations){}
default void clearCustomPolyline(){}

View File

@@ -53,7 +53,7 @@ object CommonModel {
private val TAG: String = SceneConstant.M_BUS_P+CommonModel::class.java.simpleName
var mContext: Context? = null
var inOrder = false
private var mCommonCallbackList = mutableMapOf<String,ICommonCallback>()
@@ -140,12 +140,12 @@ object CommonModel {
override fun onAutopilotStatusResponse(state: Int) {
d(TAG, "onAutopilotStatusResponse ===== $state")
mCommonCallbackList.forEach {
it.value.updateAutoStatus(state)
}
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){
//美化模式下且行程中
if (FunctionBuildConfig.isDemoMode &&
mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1
&& isGoingToNextStation
){
if (FunctionBuildConfig.isDemoMode && inOrder()) {
mCommonCallbackList.forEach {
it.value.updateAutoStatus(true)
}
@@ -232,6 +232,21 @@ object CommonModel {
mCommonCallbackList.forEach {
it.value.showNoTaskView(true)
}
dispatchInOrder()
}
private fun dispatchInOrder() {
val newValue = inOrder()
if (inOrder != newValue) {
inOrder = newValue
mCommonCallbackList.forEach {
it.value.updateInOrderStatus(newValue)
}
}
}
private fun inOrder(): Boolean {
return mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 && isGoingToNextStation
}
@@ -278,6 +293,7 @@ object CommonModel {
val endStation = mStations[i + 1]
startStationVideo(endStation)
setTrajectoryStation(startStation, endStation, result.lineId)
dispatchInOrder()
return
} else if (!station.isLeaving) {
if (i == stations.size - 1) {
@@ -288,6 +304,7 @@ object CommonModel {
mCommonCallbackList.forEach {
it.value.updateStationsInfo(stations, i, true)
}
dispatchInOrder()
return
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -24,10 +24,10 @@
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.status.StatusView
android:id="@+id/auto_tv"
android:background="@drawable/m2_autopilot_status_out"
android:background="@drawable/m2_status_basic"
android:text="@string/m2_autopilot_status"
android:gravity="center"
android:textColor="@color/common_284F7E"
android:textColor="@color/common_ffffffff"
android:textSize="@dimen/dp_26"
android:textStyle="bold"
android:layout_marginBottom="@dimen/dp_3"

View File

@@ -11,7 +11,7 @@
android:id="@+id/turn_light_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/m2_autopilot_status_out"
android:background="@drawable/m2_turn_light_bg"
android:layout_gravity="top|center_horizontal"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"