[b4]
[到站逻辑变更、自车状态]
This commit is contained in:
yangyakun
2026-03-10 20:27:49 +08:00
parent ed21e17f56
commit 826f2fe19b
16 changed files with 338 additions and 49 deletions

View File

@@ -30,7 +30,7 @@ open class BusStationBean {
var lat: Double = 0.0 //高精坐标
@JvmField
var drivingStatus: Int = 0 //行驶信息0初始值1已经过2当前站3未到站
var isLeaving: Boolean = false // 出发false 出发true
var isLeaving: Boolean = false // 出发false 出发true
var introduction: String? = null // 站点简介
var isPlayTts: Boolean = false
var pointType: Int = 0 // 1:途径点 2:禁行点 3:站点

View File

@@ -21,6 +21,7 @@ import com.mogo.och.unmanned.model.LineModel
import com.mogo.och.unmanned.ui.bizswitch.SwtichBizModel
import kotlinx.android.synthetic.main.shuttle_unmanned_task_running.view.unmanned_aciv_task_leave_station_slide_bg
import kotlinx.android.synthetic.main.shuttle_unmanned_task_running.view.unmanned_actv_arriver_station
import kotlinx.android.synthetic.main.shuttle_unmanned_task_running.view.unmanned_actv_arriver_station_new
import kotlinx.android.synthetic.main.shuttle_unmanned_task_running.view.unmanned_actv_complete_task
import kotlinx.android.synthetic.main.shuttle_unmanned_task_running.view.unmanned_actv_running_task_last_station
import kotlinx.android.synthetic.main.shuttle_unmanned_task_running.view.unmanned_actv_running_task_time
@@ -88,6 +89,10 @@ class TaskRunningView : ConstraintLayout, TaskRunningModel.SwtichLineViewCallbac
}
}
unmanned_actv_arriver_station_new.setOnLongClickListener {
viewModel?.arriveStation()
true
}
unmanned_actv_complete_task.onClick {
CallerLogger.d(TAG, "启动自驾参数:${LineManager.initAutopilotControlParameters()}")
val builder = CommonDialogStatus.Builder()

View File

@@ -125,5 +125,18 @@
app:pressed_enabled="false" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/unmanned_actv_arriver_station_new"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_200"
android:background="@drawable/unmanned_bus_switch_task_selector"
android:gravity="center"
android:text="@string/unmanned_bus_running_task_jump_station"
android:textColor="@color/unmanned_bus_task_submit_text_color_selector"
android:textSize="@dimen/dp_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:pressed_enabled="false" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -55,9 +55,18 @@ class PB4DrivingFullsPresenter(view: PB4DrivingInfoFullSFragment?) :
}
override fun updateStationsInfo(stations: MutableList<BusStationBean>, i: Int, isArrived: Boolean) {
override fun updateStationsInfo(stations: MutableList<BusStationBean>, currentStationIndex: Int, isArrived: Boolean) {
ThreadUtils.runOnUiThread {
mView?.updateStationsInfo(stations, i, isArrived)
mView?.updateStationsInfo(stations, currentStationIndex, isArrived)
}
}
override fun updateLineInfo(lineName: String?) {
super.updateLineInfo(lineName)
lineName?.let {
ThreadUtils.runOnUiThread {
mView?.updateLineName(it)
}
}
}

View File

@@ -3,11 +3,34 @@ package com.mogo.och.shuttle.weaknet.passenger.ui.linenew
import android.os.Bundle
import android.view.View
import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.utils.NumberFormatUtil
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.data.bean.BusStationBean
import com.mogo.och.shuttle.weaknet.passenger.R
import com.mogo.och.shuttle.weaknet.passenger.presenter.PB4DrivingFullsPresenter
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.aciv_arrow_station_1
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.aciv_arrow_station_2
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.aciv_arrow_station_3
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.aciv_arrow_station_4
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.aciv_text_no_service
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actvLineName
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_des_first
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_des_second
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_head_pre_1
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_head_pre_2
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_head_pre_3
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_head_pre_4
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_pre_1
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_pre_2
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_pre_3
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.actv_station_pre_4
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.cl_empty_server
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.cl_line_info_station
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.end_station_name
import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.group_station_empty
import kotlinx.android.synthetic.main.m2_arrive_view.view.ochtv_arrive_station_value
import kotlin.math.ceil
import kotlin.math.roundToInt
@@ -28,6 +51,21 @@ class PB4DrivingInfoFullSFragment :
}
override fun initViews() {
actv_station_des_first.setVertrial(true)
val intArrayOf = intArrayOf(
ResourcesUtils.getColor(R.color.b4_CDFFC0),
ResourcesUtils.getColor(R.color.b4_9AFF98),
)
actv_station_des_first.setmColorList(intArrayOf)
actv_station_des_second.setmColorList(intArrayOf)
aciv_text_no_service.setVertrial(true)
val intArrayOf2 = intArrayOf(
ResourcesUtils.getColor(R.color.b4_EDBE2B),
ResourcesUtils.getColor(R.color.b4_FF8300),
)
aciv_text_no_service.setmColorList(intArrayOf2)
}
@@ -49,27 +87,161 @@ class PB4DrivingInfoFullSFragment :
super.onDestroyView()
}
fun showNoTaskView(haveTask: Boolean) {
fun showNoTaskView(empty: Boolean) {
CallerLogger.d(TAG,"是否有任务:${empty}")
if(empty){
cl_empty_server.visibility = View.VISIBLE
cl_line_info_station.visibility = View.GONE
group_station_empty.visibility = View.GONE
actvLineName.text = ""
}else{
cl_empty_server.visibility = View.GONE
cl_line_info_station.visibility = View.VISIBLE
group_station_empty.visibility = View.VISIBLE
}
}
override fun createPresenter(): PB4DrivingFullsPresenter {
return PB4DrivingFullsPresenter(this)
}
fun updateStationsInfo(stations: MutableList<BusStationBean>, i: Int, isArrived: Boolean) {
fun updateStationsInfo(stations: MutableList<BusStationBean>, currentStationIndex: Int, isLeave: Boolean) {
if (stations.isEmpty()) {
showNoTaskView(true)
} else {
if (isArrived && i != 0) {
} else {
when (currentStationIndex) {
0 -> {
actv_station_des_first.text = StringUtils.getString(R.string.b4_station_start_desc)
actv_station_des_first.invalidate()
actv_station_des_second.visibility = View.GONE
}
stations.size-1 -> {
actv_station_des_first.text = StringUtils.getString(R.string.b4_station_end_desc)
actv_station_des_first.invalidate()
actv_station_des_second.visibility = View.GONE
}
else -> {
actv_station_des_first.text = StringUtils.getString(R.string.b4_station_middle_desc_first)
actv_station_des_first.invalidate()
actv_station_des_second.visibility = View.VISIBLE
actv_station_des_second.text = StringUtils.getString(R.string.b4_station_middle_desc_second)
actv_station_des_first.invalidate()
}
}
if(stations.isNotEmpty()) {
val last = stations.last()
end_station_name.text = last.name
stations.removeLast()
}
CallerLogger.d(TAG,"isLeave:${isLeave}---currentStationIndex:${currentStationIndex}")
showStationInfo(currentStationIndex,stations)
if(currentStationIndex+4<stations.size){
aciv_arrow_station_4.visibility = View.VISIBLE
aciv_arrow_station_4.setImageResource(R.drawable.b4_arrow_double)
}else{
aciv_arrow_station_4.setImageResource(R.drawable.b4_arrow_single)
}
if(isLeave){// 到达
cl_empty_server.visibility = View.GONE
cl_line_info_station.visibility = View.GONE
}else{
cl_empty_server.visibility = View.GONE
cl_line_info_station.visibility = View.VISIBLE
}
}
}
private fun showStationInfo(currentStationIndex:Int,stations:MutableList<BusStationBean>){
if(currentStationIndex<stations.size) {
val currentStation = stations[currentStationIndex]//1
showBottom1Station(currentStation,true)
}else{
showBottom1Station(null,false)
}
if(currentStationIndex+1<stations.size){
val next1Station = stations[currentStationIndex + 1]//2
showBottom2Station(next1Station,true)
}else{
showBottom2Station(null,false)
}
if(currentStationIndex+2<stations.size){
val next2Station = stations[currentStationIndex + 2]//3
showBottom3Station(next2Station,true)
}else{
showBottom3Station(null,false)
}
if(currentStationIndex+3<stations.size){
val next2Station = stations[currentStationIndex + 3]//4
showBottom4Station(next2Station,true)
}else{
showBottom4Station(null,false)
}
}
private fun showBottom1Station(station:BusStationBean?,isShow:Boolean){
if(isShow) {
actv_station_pre_1.text = station?.name
aciv_arrow_station_1.visibility = View.VISIBLE
actv_station_head_pre_1.visibility = View.VISIBLE
actv_station_pre_1.visibility = View.VISIBLE
}else{
aciv_arrow_station_1.visibility = View.GONE
actv_station_head_pre_1.visibility = View.GONE
actv_station_pre_1.visibility = View.GONE
}
}
private fun showBottom2Station(station:BusStationBean?,isShow:Boolean){
if(isShow) {
actv_station_pre_2.text = station?.name
aciv_arrow_station_2.visibility = View.VISIBLE
actv_station_head_pre_2.visibility = View.VISIBLE
actv_station_pre_2.visibility = View.VISIBLE
}else{
aciv_arrow_station_2.visibility = View.GONE
actv_station_head_pre_2.visibility = View.GONE
actv_station_pre_2.visibility = View.GONE
}
}
private fun showBottom3Station(station:BusStationBean?,isShow:Boolean){
if(isShow) {
actv_station_pre_3.text = station?.name
aciv_arrow_station_3.visibility = View.VISIBLE
actv_station_head_pre_3.visibility = View.VISIBLE
actv_station_pre_3.visibility = View.VISIBLE
}else{
aciv_arrow_station_3.visibility = View.GONE
actv_station_head_pre_3.visibility = View.GONE
actv_station_pre_3.visibility = View.GONE
}
}
private fun showBottom4Station(station:BusStationBean?,isShow:Boolean){
if(isShow) {
actv_station_pre_4.text = station?.name
aciv_arrow_station_4.visibility = View.VISIBLE
actv_station_head_pre_4.visibility = View.VISIBLE
actv_station_pre_4.visibility = View.VISIBLE
}else{
aciv_arrow_station_4.visibility = View.GONE
actv_station_head_pre_4.visibility = View.GONE
actv_station_pre_4.visibility = View.GONE
}
}
fun updateLineName(lineName: String){
actvLineName.text = lineName
}
/**
* 剩余里程和时间
*/

View File

@@ -15,6 +15,7 @@ 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 B4StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
private val TAG = "B4StatusView"
@@ -24,9 +25,9 @@ class B4StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
context,
attributeSet,
defStyleAttr
context,
attributeSet,
defStyleAttr
)
override fun onAttachedToWindow() {
@@ -80,29 +81,29 @@ class B4StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener {
}
val autopilotState = CallerAutoPilotStatusListenerManager.getState()
CallerLogger.i(
TAG,
"数据刷新来源=$sourceStr 自动驾驶状态=${autopilotState} 订单状态=${CommonModel.inOrder} 美化模式状态=${FunctionBuildConfig.isDemoMode} B2美化模式状态=${FunctionBuildConfig.isB2DemoMode} "
TAG,
"数据刷新来源=$sourceStr 自动驾驶状态=${autopilotState} 订单状态=${CommonModel.inOrder} 美化模式状态=${FunctionBuildConfig.isDemoMode} B2美化模式状态=${FunctionBuildConfig.isB2DemoMode} "
)
if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == autopilotState) {
return R.drawable.b4_status_parallel
return R.drawable.b4_autopilot_state_7
}
// 处理非平行驾驶状态的情况
return when {
// 无订单的情况
!CommonModel.inOrder -> {
R.drawable.b4_status_basic
return R.drawable.b4_autopilot_state_0
}
// 有订单且美化状态和b2美化状态任意开着
CommonModel.inOrder && (FunctionBuildConfig.isDemoMode || FunctionBuildConfig.isB2DemoMode) -> {
R.drawable.b4_status_order_auto
R.drawable.b4_autopilot_state_2
}
// 有订单且美化状态和b2美化状态都关着
CommonModel.inOrder && !FunctionBuildConfig.isDemoMode && !FunctionBuildConfig.isB2DemoMode -> {
if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.drawable.b4_status_order_auto else R.drawable.b4_status_basic
if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.drawable.b4_autopilot_state_2 else R.drawable.b4_autopilot_state_0
}
// 覆盖所有可能的情况
else -> R.drawable.b4_status_basic
else -> R.drawable.b4_autopilot_state_0
}
}

View File

@@ -282,11 +282,10 @@ object CommonModel {
val station = stations[i]
if(station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED){
updateAutopilotControlParameters(result, i)
if (station.isLeaving && i + 1 < stations.size
) {
if (station.isLeaving && i + 1 < stations.size) {// 已经离开了
isGoingToNextStation = true
mCommonCallbackList.forEach {
it.value.updateStationsInfo(stations, i + 1, false)
it.value.updateStationsInfo(stations, i, true)
}
mNextStationIndex = i + 1
val startStation = mStations[i]
@@ -302,7 +301,7 @@ object CommonModel {
isGoingToNextStation = false
Logger.d(TAG, "order = station= arrive")
mCommonCallbackList.forEach {
it.value.updateStationsInfo(stations, i, true)
it.value.updateStationsInfo(stations, i, false)
}
dispatchInOrder()
return

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/b4_333333" />
<corners android:radius="@dimen/dp_35" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/b4_2EACFF" />
<corners android:radius="@dimen/dp_35" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/b4_9A2EFF" />
<corners android:radius="@dimen/dp_35" />
</shape>

View File

@@ -2,8 +2,9 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="@dimen/dp_185"
android:layout_height="@dimen/dp_380"
android:background="@color/black"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<androidx.appcompat.widget.AppCompatImageView
@@ -16,7 +17,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.speed.B4SpeedView
<com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.speed.B4SpeedView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
@@ -24,11 +25,11 @@
app:layout_constraintStart_toStartOf="@+id/b4_aciv_right_bg"
app:layout_constraintTop_toTopOf="@+id/b4_aciv_right_bg" />
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.status.B4StatusView
<com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.status.B4StatusView
android:id="@+id/b4_auto_tv"
android:layout_width="@dimen/dp_118"
android:layout_height="@dimen/dp_69"
android:layout_marginBottom="@dimen/dp_3"
android:layout_marginBottom="@dimen/dp_30"
android:background="@color/b4_333333"
android:gravity="center"
android:text="@string/b4_autopilot_status"
@@ -40,11 +41,11 @@
app:layout_constraintStart_toStartOf="@+id/b4_aciv_right_bg" />
<!-- 转向灯-->
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.light.B4TurnLightView
<com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.light.B4TurnLightView
android:id="@+id/b4_turn_light_view"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_96"
android:layout_marginBottom="@dimen/dp_51"
android:layout_width="@dimen/dp_119"
android:layout_height="@dimen/dp_65"
android:layout_marginBottom="@dimen/dp_41"
app:layout_constraintBottom_toBottomOf="@+id/b4_aciv_right_bg"
app:layout_constraintEnd_toEndOf="@+id/b4_aciv_right_bg"
app:layout_constraintStart_toStartOf="@+id/b4_aciv_right_bg" />

View File

@@ -17,6 +17,14 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.Group
android:id="@+id/group_station_empty"
android:visibility="gone"
tools:visibility="visible"
app:constraint_referenced_ids="aciv_end_station_head,end_station_name,bg_line_green,,aciv_arrow_station_4,actv_station_head_pre_4,actv_station_pre_4,aciv_arrow_station_3,actv_station_head_pre_3,actv_station_pre_3,aciv_arrow_station_2,actv_station_head_pre_2,actv_station_pre_2,aciv_arrow_station_1,actv_station_head_pre_1,actv_station_pre_1,"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actvLineName"
android:layout_width="@dimen/dp_136"
@@ -25,12 +33,23 @@
android:layout_marginTop="@dimen/dp_47"
android:background="@drawable/b4_line_name"
android:gravity="center"
android:text="100"
tools:text="100"
android:textColor="@color/white"
android:textSize="@dimen/dp_54"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:text="Destination"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:layout_marginStart="@dimen/dp_290"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<!-- empty 需要INVISIBLE -->
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_end_station_head"
app:layout_constraintTop_toTopOf="@+id/actvLineName"
@@ -41,8 +60,9 @@
android:elevation="10dp"
android:layout_width="@dimen/dp_106"
android:layout_height="@dimen/dp_106"/>
<!--empty 需要特定文案-->
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/end_station_name"
app:layout_constraintTop_toTopOf="@+id/aciv_end_station_head"
app:layout_constraintBottom_toBottomOf="@+id/aciv_end_station_head"
app:layout_constraintStart_toEndOf="@+id/aciv_end_station_head"
@@ -108,6 +128,7 @@
android:layout_height="@dimen/dp_22"/>
<ImageView
android:id="@+id/actv_station_head_pre_4"
android:src="@drawable/b4_arrior_station"
android:elevation="8dp"
app:layout_constraintTop_toTopOf="@+id/bg_station_4"
@@ -118,6 +139,7 @@
android:layout_height="@dimen/dp_50"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_station_pre_4"
app:layout_constraintTop_toTopOf="@+id/bg_station_4"
app:layout_constraintBottom_toBottomOf="@+id/bg_station_4"
app:layout_constraintStart_toStartOf="@+id/bg_station_4"
@@ -125,7 +147,7 @@
android:layout_marginStart="@dimen/dp_18"
android:textSize="@dimen/dp_40"
android:textColor="@color/white"
android:text="Gradens by the bay"
tools:text="Gradens by the bay"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
@@ -149,6 +171,7 @@
android:layout_height="@dimen/dp_22"/>
<ImageView
android:id="@+id/actv_station_head_pre_3"
android:src="@drawable/b4_arrior_station"
android:elevation="8dp"
app:layout_constraintTop_toTopOf="@+id/bg_station_3"
@@ -159,6 +182,7 @@
android:layout_height="@dimen/dp_50"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_station_pre_3"
app:layout_constraintTop_toTopOf="@+id/bg_station_3"
app:layout_constraintBottom_toBottomOf="@+id/bg_station_3"
app:layout_constraintStart_toStartOf="@+id/bg_station_3"
@@ -166,7 +190,7 @@
android:layout_marginStart="@dimen/dp_18"
android:textSize="@dimen/dp_40"
android:textColor="@color/white"
android:text="Bef Marina Gdns Dr"
tools:text="Bef Marina Gdns Dr"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
@@ -190,6 +214,7 @@
android:layout_height="@dimen/dp_16"/>
<ImageView
android:id="@+id/actv_station_head_pre_2"
android:src="@drawable/b4_arrior_station"
android:elevation="8dp"
app:layout_constraintTop_toTopOf="@+id/bg_station_2"
@@ -200,6 +225,7 @@
android:layout_height="@dimen/dp_50"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_station_pre_2"
app:layout_constraintTop_toTopOf="@+id/bg_station_2"
app:layout_constraintBottom_toBottomOf="@+id/bg_station_2"
app:layout_constraintStart_toStartOf="@+id/bg_station_2"
@@ -207,7 +233,7 @@
android:layout_marginStart="@dimen/dp_18"
android:textSize="@dimen/dp_40"
android:textColor="@color/white"
android:text="Marina Bay Cruise Centre"
tools:text="Marina Bay Cruise Centre"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
@@ -231,6 +257,7 @@
android:layout_height="@dimen/dp_16"/>
<ImageView
android:id="@+id/actv_station_head_pre_1"
android:src="@drawable/b4_arrior_station"
android:elevation="8dp"
app:layout_constraintTop_toTopOf="@+id/bg_station_1"
@@ -241,6 +268,7 @@
android:layout_height="@dimen/dp_50"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_station_pre_1"
app:layout_constraintTop_toTopOf="@+id/bg_station_1"
app:layout_constraintBottom_toBottomOf="@+id/bg_station_1"
app:layout_constraintStart_toStartOf="@+id/bg_station_1"
@@ -248,7 +276,7 @@
android:layout_marginStart="@dimen/dp_18"
android:textSize="@dimen/dp_40"
android:textColor="@color/white"
android:text="80 Robinson Road"
tools:text="80 Robinson Road"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
@@ -279,15 +307,17 @@
android:layout_width="0dp"
android:layout_height="0dp">
<androidx.appcompat.widget.AppCompatImageView
<com.mogo.och.common.module.wigets.OCHGradientTextView
android:id="@+id/aciv_text_no_service"
android:textSize="@dimen/dp_50"
android:text="@string/b4_no_service"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_305"
android:src="@drawable/b4_no_service"
android:layout_width="@dimen/dp_390"
android:layout_height="@dimen/dp_68"/>
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatImageView
app:layout_constraintTop_toBottomOf="@+id/aciv_text_no_service"
@@ -299,7 +329,6 @@
android:layout_height="@dimen/dp_524"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_line_info_station"
app:layout_constraintTop_toBottomOf="@+id/cl_line_info"
@@ -307,6 +336,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@drawable/b4_empty_service_bg"
android:visibility="visible"
android:layout_width="0dp"
android:layout_height="0dp">
@@ -361,21 +391,38 @@
app:layout_constraintStart_toEndOf="@+id/b4_aciv_door_right"
app:layout_constraintTop_toTopOf="@+id/b4_aciv_door_right" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_station_des"
<LinearLayout
android:id="@+id/service_station_des"
app:layout_constraintTop_toBottomOf="@+id/b4_aciv_doorway"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_78"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.mogo.och.common.module.wigets.OCHGradientTextView
android:id="@+id/actv_station_des_first"
android:textSize="@dimen/dp_50"
android:text="@string/b4_station_start_desc"
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.mogo.och.common.module.wigets.OCHGradientTextView
android:id="@+id/actv_station_des_second"
android:textSize="@dimen/dp_50"
android:text="@string/b4_station_start_desc"
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:src="@drawable/b4_station_start"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/actv_station_des"
app:layout_constraintTop_toBottomOf="@+id/service_station_des"
android:layout_marginTop="@dimen/dp_70"
android:layout_width="@dimen/dp_736"
android:layout_height="@dimen/dp_526"/>

View File

@@ -54,5 +54,13 @@
app:layout_constraintTop_toTopOf="parent"
app:lightUser="passenger" />
<com.mogo.och.shuttle.weaknet.passenger.ui.map.autopilot.B4AutopilotView
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:layout_width="@dimen/dp_185"
android:layout_height="@dimen/dp_380"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -8,4 +8,10 @@
<string name="b4_empty_line_title">MOGO Autonomous Driving Minibus</string>
<string name="b4_empty_line_content">Ready to depart</string>
<string name="b4_arrive_station_title">Current Station</string>
<string name="b4_no_service">No Service</string>
<string name="b4_station_start_desc">Please fasten your seat belt</string>
<string name="b4_station_middle_desc_first">Please take your belongings when alighting</string>
<string name="b4_station_middle_desc_second">Please fasten your seat belt when boarding</string>
<string name="b4_station_end_desc">Take Your Belongings and Goodbye</string>
</resources>

View File

@@ -18,4 +18,8 @@
<color name="b4_7C7C7C">#7C7C7C</color>
<color name="b4_2EACFF">#2EACFF</color>
<color name="b4_9A2EFF">#9A2EFF</color>
<color name="b4_CDFFC0">#CDFFC0</color>
<color name="b4_9AFF98">#9AFF98</color>
<color name="b4_EDBE2B">#EDBE2B</color>
<color name="b4_FF8300">#FF8300</color>
</resources>

View File

@@ -8,4 +8,10 @@
<string name="b4_empty_line_title">MOGO自动驾驶小巴</string>
<string name="b4_empty_line_content">即将启程</string>
<string name="b4_arrive_station_title">当前到站</string>
<string name="b4_no_service">无服务</string>
<string name="b4_station_start_desc">请系好安全带</string>
<string name="b4_station_middle_desc_first">下车时请拿好您的随身物品</string>
<string name="b4_station_middle_desc_second">上车后请系好安全带</string>
<string name="b4_station_end_desc">请带好您的物品,下次再见</string>
</resources>