[6.7.0]消息盒子UI改版
This commit is contained in:
@@ -19,7 +19,7 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.DriverMsgBoxListAdapter
|
||||
import com.mogo.eagle.core.function.hmi.bone.tab.adapter.MsgBoxTabAdapter
|
||||
import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import kotlinx.android.synthetic.main.layout_driver_msg_box_list.view.*
|
||||
@@ -40,7 +40,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
IOrderListener {
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.layout_msg_box_tab, this, true)
|
||||
LayoutInflater.from(context).inflate(R.layout.view_msg_box_tab, this, true)
|
||||
initView()
|
||||
}
|
||||
private val TAG = "MsgBoxTabView"
|
||||
@@ -48,14 +48,14 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
private var fmList: ArrayList<MsgBoxBean> ?= ArrayList() //FM信息消息列表
|
||||
private var ipcReportList: ArrayList<MsgBoxBean> ?= null //车辆系统信息消息列表
|
||||
private var badCaseList: ArrayList<MsgBoxBean> ?= null//录包消息列表
|
||||
private var driverMsgBoxListAdapter: DriverMsgBoxListAdapter ?=null
|
||||
private var msgBoxTabAdapter: MsgBoxTabAdapter ?=null
|
||||
private var linearLayoutManager: LinearLayoutManager ?= null
|
||||
|
||||
private var isShowSummary = false //是否展示汇总消息
|
||||
|
||||
private fun initView() {
|
||||
driverMsgBoxListAdapter= DriverMsgBoxListAdapter(context as Activity)
|
||||
rvMsgBoxList.adapter = driverMsgBoxListAdapter
|
||||
msgBoxTabAdapter= MsgBoxTabAdapter(context as Activity)
|
||||
rvMsgBoxList.adapter = msgBoxTabAdapter
|
||||
linearLayoutManager = LinearLayoutManager(context)
|
||||
rvMsgBoxList.layoutManager = linearLayoutManager
|
||||
|
||||
@@ -82,7 +82,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(noticeList==null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(noticeList!!)
|
||||
msgBoxTabAdapter?.setData(noticeList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -102,7 +102,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(fmList == null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(fmList!!)
|
||||
msgBoxTabAdapter?.setData(fmList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -121,7 +121,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(ipcReportList == null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(ipcReportList!!)
|
||||
msgBoxTabAdapter?.setData(ipcReportList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -141,7 +141,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(badCaseList == null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(badCaseList!!)
|
||||
msgBoxTabAdapter?.setData(badCaseList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -165,7 +165,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(noticeList==null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(noticeList!!)
|
||||
msgBoxTabAdapter?.setData(noticeList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -183,7 +183,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(fmList == null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(fmList!!)
|
||||
msgBoxTabAdapter?.setData(fmList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -201,7 +201,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(ipcReportList == null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(ipcReportList!!)
|
||||
msgBoxTabAdapter?.setData(ipcReportList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -219,7 +219,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(badCaseList == null){
|
||||
rvMsgBoxList.visibility = View.GONE
|
||||
}else{
|
||||
driverMsgBoxListAdapter?.setData(badCaseList!!)
|
||||
msgBoxTabAdapter?.setData(badCaseList!!)
|
||||
rvMsgBoxList.visibility = View.VISIBLE
|
||||
rvMsgBoxList.scrollToPosition(0)
|
||||
}
|
||||
@@ -238,14 +238,14 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
if(isShowSummary){
|
||||
noticeList?.add(0,msgBoxList)
|
||||
if(MsgBoxConfig.getUserRecord() == 0){
|
||||
noticeList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
noticeList?.let { msgBoxTabAdapter?.setData(it) }
|
||||
}
|
||||
isShowSummary = false
|
||||
}
|
||||
}else{
|
||||
noticeList?.add(0,msgBoxList)
|
||||
if(MsgBoxConfig.getUserRecord() == 0){
|
||||
noticeList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
noticeList?.let { msgBoxTabAdapter?.setData(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -253,21 +253,21 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
MsgCategory.FM_INFO -> {
|
||||
fmList?.add(0,msgBoxList)
|
||||
if(MsgBoxConfig.getUserRecord() == 1){
|
||||
fmList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
fmList?.let { msgBoxTabAdapter?.setData(it) }
|
||||
}
|
||||
}
|
||||
//系统信息
|
||||
MsgCategory.SYS_INFO -> {
|
||||
ipcReportList?.add(0,msgBoxList)
|
||||
if(MsgBoxConfig.getUserRecord() == 2){
|
||||
ipcReportList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
ipcReportList?.let { msgBoxTabAdapter?.setData(it) }
|
||||
}
|
||||
}
|
||||
//录包
|
||||
MsgCategory.RECORD_BAG -> {
|
||||
badCaseList?.add(0,msgBoxList)
|
||||
if(MsgBoxConfig.getUserRecord() == 3){
|
||||
badCaseList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
badCaseList?.let { msgBoxTabAdapter?.setData(it) }
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
@@ -294,7 +294,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun notifyList(msgBoxList: MsgBoxBean){
|
||||
badCaseList?.let {
|
||||
driverMsgBoxListAdapter?.notifyItemRemoved(it.indexOf(msgBoxList))
|
||||
msgBoxTabAdapter?.notifyItemRemoved(it.indexOf(msgBoxList))
|
||||
it.remove(msgBoxList)
|
||||
}
|
||||
}
|
||||
@@ -328,7 +328,7 @@ class MsgBoxTabView @JvmOverloads constructor(
|
||||
notifyData()
|
||||
ipcReportList?.let {
|
||||
linearLayoutManager?.scrollToPositionWithOffset(it.indexOf(msgBoxBean),0)
|
||||
driverMsgBoxListAdapter?.setReportShowData(msgBoxBean)
|
||||
msgBoxTabAdapter?.setReportShowData(msgBoxBean)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,703 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone.tab.adapter
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
|
||||
import com.mogo.eagle.core.data.msgbox.*
|
||||
import com.mogo.eagle.core.data.deva.report.ReportEntity
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
|
||||
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
|
||||
/**
|
||||
* 司机端Tab类型的消息盒子适配器
|
||||
*/
|
||||
class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
|
||||
private var data: List<MsgBoxBean>? = null
|
||||
private var reportBean: MsgBoxBean ?= null
|
||||
|
||||
private val operation: Int = 1
|
||||
private val operationReturn: Int = 10
|
||||
private val operationStop: Int = 11
|
||||
private val operationDoorSwitchFail: Int = 13
|
||||
private val notice: Int = 2
|
||||
private val v2x: Int = 3
|
||||
private val fm: Int = 4 //FM信息
|
||||
private val report: Int = 5 //系统信息
|
||||
private val record: Int = 6 //录包
|
||||
private val summary: Int = 8 //汇总消息
|
||||
private val ssm: Int = 9 //SSM连接消息
|
||||
private val autopilot = 20 //工控机连接消息
|
||||
private val fsm = 21 //fsm消息
|
||||
|
||||
private val none = -1
|
||||
|
||||
|
||||
//Error
|
||||
private val RESULT_AUTOPILOT_DISABLE = "RESULT_AUTOPILOT_DISABLE"
|
||||
private val RESULT_AUTOPILOT_SYSTEM_UNSTARTED = "RESULT_AUTOPILOT_SYSTEM_UNSTARTED"
|
||||
private val RESULT_REMOTEPILOT_DISABLE = "RESULT_REMOTEPILOT_DISABLE"
|
||||
|
||||
//Warning
|
||||
private val RESULT_AUTOPILOT_INFERIOR = "RESULT_AUTOPILOT_INFERIOR"
|
||||
private val RESULT_SHOW_WARNING = "RESULT_SHOW_WARNING"
|
||||
private val RESULT_REMOTEPILOT_INFERIOR = "RESULT_REMOTEPILOT_INFERIOR"
|
||||
|
||||
fun setData(data: List<MsgBoxBean>) {
|
||||
this.data = data
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun setReportShowData(reportClickBean: MsgBoxBean){
|
||||
reportBean = reportClickBean
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||
when (viewType) {
|
||||
//录包
|
||||
record -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_bad_case, parent, false)
|
||||
return BadCaseHolder(view)
|
||||
}
|
||||
//系统信息
|
||||
report -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_ipc_report, parent, false)
|
||||
return MsgBoxIpcReportHolder(view)
|
||||
}
|
||||
//FM信息
|
||||
fm -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_fm,parent,false)
|
||||
return FmInfoHolder(view)
|
||||
}
|
||||
//运营平台
|
||||
operation -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_operation, parent, false)
|
||||
return MsgBoxOperation(view)
|
||||
}
|
||||
//运营平台还车通知
|
||||
operationReturn -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_operation_return, parent, false)
|
||||
return MsgBoxOperationReturn(view)
|
||||
}
|
||||
//运营平台靠边停车通知
|
||||
operationStop -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_operation_stop, parent, false)
|
||||
return MsgBoxOperationStop(view)
|
||||
}
|
||||
//运营平台开关门失败
|
||||
operationDoorSwitchFail -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_operation_door, parent, false)
|
||||
return MsgBoxOperationDoor(view)
|
||||
}
|
||||
//官方公告
|
||||
notice -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_notice, parent, false)
|
||||
return MsgBoxNotice(view)
|
||||
}
|
||||
//汇总消息
|
||||
summary -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_summary, parent, false)
|
||||
return MsgBoxSummary(view)
|
||||
}
|
||||
//SSM连接状态消息
|
||||
ssm -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_ssm,parent,false)
|
||||
return MsgBoxSsm(view)
|
||||
}
|
||||
//域控制器连接状态消息
|
||||
autopilot -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_autopilot,parent,false)
|
||||
return MsgBoxAutopilot(view)
|
||||
}
|
||||
//fsm消息
|
||||
fsm -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_fsm,parent,false)
|
||||
return MsgBoxFSM(view)
|
||||
}
|
||||
//V2X消息
|
||||
else -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_v2x, parent, false)
|
||||
return MsgBoxV2X(view)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
||||
when (holder) {
|
||||
//录包
|
||||
is BadCaseHolder -> {
|
||||
data?.let {
|
||||
holder.tvBagReceiveTime.text =
|
||||
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
|
||||
holder.tvBagRecordTime.text =
|
||||
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
|
||||
val msgBoxBean = it[position]
|
||||
val recordBagMsg = msgBoxBean.bean as RecordBagMsg
|
||||
holder.tvRecordCheck.setOnClickListener {
|
||||
if(recordBagMsg.isShow){
|
||||
ToastUtils.showShort("当前录包上报面板已打开,请勿重复操作")
|
||||
}else{
|
||||
//打开被动录包弹窗
|
||||
CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean, activity, false)
|
||||
recordBagMsg.isShow = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//FM信息
|
||||
is FmInfoHolder -> {
|
||||
data?.let {
|
||||
val fmInfoMsg = it[position].bean as FMInfoMsg
|
||||
//时间显示
|
||||
holder.tvFmTime.text =
|
||||
"时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
|
||||
holder.tvFmTime.text =
|
||||
fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1,getHourMinFormat()) }
|
||||
//建议操作
|
||||
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
|
||||
//建议操作暂无
|
||||
holder.tvFmAction.text = "建议操作:暂无"
|
||||
//Title
|
||||
holder.tvFmTitle.text = "暂无建议操作"
|
||||
}else{
|
||||
val receiveFaultLevel = ArrayList<Int>()
|
||||
fmInfoMsg.fmInfoList!!.forEach { info ->
|
||||
if(info.faultActionCount != 0){
|
||||
info.faultActionList.forEach { action ->
|
||||
//如果不包含此故障Level,则进行添加
|
||||
if(!receiveFaultLevel.contains(MsgFmData.FaultAction.getFaultLevel(action))){
|
||||
receiveFaultLevel.add(MsgFmData.FaultAction.getFaultLevel(action))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//对faultLevel集合进行排序,按照顺序输出建议操作
|
||||
if(receiveFaultLevel.size > 0){
|
||||
val faultActionStr: StringBuilder = StringBuilder()
|
||||
faultActionStr.append("建议操作:")
|
||||
receiveFaultLevel.sort()
|
||||
// receiveFaultLevel.reverse()
|
||||
//Title
|
||||
holder.tvFmTitle.text = MsgFmData.FaultAction.getFaultTitle(receiveFaultLevel[0])
|
||||
//不同级别的Icon显示
|
||||
when(receiveFaultLevel[0]){
|
||||
0->{
|
||||
//重度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_stop_normal))
|
||||
}
|
||||
1,2,3->{
|
||||
//中度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_reduce_normal))
|
||||
}
|
||||
4,5->{
|
||||
//轻度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_normal))
|
||||
}
|
||||
}
|
||||
receiveFaultLevel.forEach {level->
|
||||
if(MsgFmData.FaultAction.getFaultAction(level).isNotBlank()){
|
||||
faultActionStr.append(MsgFmData.FaultAction.getFaultAction(level))
|
||||
}
|
||||
if(MsgFmData.FaultAction.getFaultActionCode(level).isNotBlank()){
|
||||
faultActionStr.append("(")
|
||||
faultActionStr.append(MsgFmData.FaultAction.getFaultActionCode(level))
|
||||
faultActionStr.append(")")
|
||||
}
|
||||
if(MsgFmData.FaultAction.getFaultAction(level).isNotBlank() || MsgFmData.FaultAction.getFaultActionCode(level).isNotBlank()){
|
||||
faultActionStr.append(";")
|
||||
}
|
||||
}
|
||||
if(faultActionStr.length > 5){
|
||||
if(faultActionStr.endsWith(";")){
|
||||
faultActionStr.deleteCharAt(faultActionStr.lastIndex)
|
||||
}
|
||||
holder.tvFmAction.text = faultActionStr.toString()
|
||||
}else{
|
||||
holder.tvFmAction.text = "建议操作:暂无"
|
||||
}
|
||||
}else{
|
||||
holder.tvFmAction.text = "建议操作:暂无"
|
||||
//轻度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_normal))
|
||||
}
|
||||
}
|
||||
//故障策略
|
||||
holder.tvFmFault.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
|
||||
//故障原因
|
||||
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
|
||||
holder.tvFmReason.text = "故障原因:暂无"
|
||||
}else{
|
||||
val fmFaultReason = StringBuilder()
|
||||
fmFaultReason.append("故障原因:")
|
||||
for((index,info) in fmInfoMsg.fmInfoList!!.withIndex()){
|
||||
fmFaultReason.append(info.faultName)
|
||||
if(info.faultId.isNotBlank()){
|
||||
fmFaultReason.append("(")
|
||||
fmFaultReason.append(info.faultId)
|
||||
fmFaultReason.append(")")
|
||||
}
|
||||
if(index!=(fmInfoMsg.fmInfoList!!.size-1)){
|
||||
fmFaultReason.append("/")
|
||||
}
|
||||
}
|
||||
holder.tvFmReason.text = fmFaultReason.toString()
|
||||
}
|
||||
//故障后果
|
||||
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
|
||||
holder.tvFmResult.text = "故障后果:暂无"
|
||||
}else{
|
||||
val fmFaultResult = StringBuilder()
|
||||
fmFaultResult.append("故障后果:")
|
||||
fmInfoMsg.fmInfoList!!.forEach { info->
|
||||
if(info.faultResultCount != 0){
|
||||
info.faultResultList.forEach { result->
|
||||
if(MsgFmData.FaultResult.getResultDefine(result).isNotBlank()){
|
||||
fmFaultResult.append(MsgFmData.FaultResult.getResultDefine(result))
|
||||
}
|
||||
if(result.isNotBlank()){
|
||||
fmFaultResult.append("(")
|
||||
fmFaultResult.append(result)
|
||||
fmFaultResult.append(")")
|
||||
}
|
||||
if(MsgFmData.FaultResult.getResultDefine(result).isNotBlank() || result.isNotBlank()){
|
||||
fmFaultResult.append("/")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(fmFaultResult.endsWith("/")){
|
||||
holder.tvFmResult.text = fmFaultResult.deleteCharAt(fmFaultResult.lastIndex).toString()
|
||||
}else{
|
||||
holder.tvFmResult.text = "故障后果:暂无"
|
||||
}
|
||||
}
|
||||
//对布局进行展开折叠操作
|
||||
if(fmInfoMsg.isShow){
|
||||
holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmFault.visibility = View.VISIBLE
|
||||
holder.tvFmReason.visibility = View.VISIBLE
|
||||
holder.tvFmResult.visibility = View.VISIBLE
|
||||
}else{
|
||||
holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmFault.visibility = View.GONE
|
||||
holder.tvFmReason.visibility = View.GONE
|
||||
holder.tvFmResult.visibility = View.GONE
|
||||
}
|
||||
holder.tvFmShowStatus.setOnClickListener{
|
||||
if(!fmInfoMsg.isShow){
|
||||
fmInfoMsg.isShow = true
|
||||
holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmFault.visibility = View.VISIBLE
|
||||
holder.tvFmReason.visibility = View.VISIBLE
|
||||
holder.tvFmResult.visibility = View.VISIBLE
|
||||
}else{
|
||||
fmInfoMsg.isShow = false
|
||||
holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmFault.visibility = View.GONE
|
||||
holder.tvFmReason.visibility = View.GONE
|
||||
holder.tvFmResult.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//系统信息
|
||||
is MsgBoxIpcReportHolder -> {
|
||||
data?.let { it ->
|
||||
val reportMsgBox = it[position]
|
||||
holder.tvReportTime.text =
|
||||
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
|
||||
val reportEntity = (it[position].bean as ReportEntity)
|
||||
if (reportEntity.resultList.contains(RESULT_AUTOPILOT_DISABLE)
|
||||
|| reportEntity.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
|
||||
|| reportEntity.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
|
||||
) {
|
||||
//Error
|
||||
holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_error_normal))
|
||||
holder.tvReportLevel.text = "Error"
|
||||
} else if(reportEntity.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
|
||||
|| reportEntity.resultList.contains(RESULT_SHOW_WARNING)
|
||||
|| reportEntity.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)
|
||||
){
|
||||
//Warning
|
||||
holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_warning_normal))
|
||||
holder.tvReportLevel.text = "Warning"
|
||||
}else {
|
||||
//INFO
|
||||
holder.ivReportImage.setImageDrawable(getDrawable(R.drawable.icon_report_info_normal))
|
||||
holder.tvReportLevel.text = "Info"
|
||||
}
|
||||
|
||||
holder.tvReportTime.text =
|
||||
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
|
||||
holder.tvReportShowTime.text =
|
||||
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
|
||||
var resultStr = "类型:"
|
||||
for (result in reportEntity.resultList) {
|
||||
resultStr =
|
||||
"${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}"
|
||||
}
|
||||
holder.tvReportType.text = resultStr
|
||||
holder.tvReportReason.text = "原因:${reportEntity.msg}"
|
||||
holder.tvReportSrc.text = "消息来源:${reportEntity.src}"
|
||||
var actionStr = ""
|
||||
for (action in reportEntity.actionsList) {
|
||||
actionStr =
|
||||
"${actionStr}${CallerAutoPilotControlManager.getReportActionDesc(action)}"
|
||||
}
|
||||
holder.tvReportAction.text = "建议操作:$actionStr"
|
||||
holder.tvReportShowStatus.tag = reportEntity
|
||||
if(reportEntity.isShow){
|
||||
holder.tvReportShowStatus.text = "收起"
|
||||
holder.tvReportReason.visibility = View.VISIBLE
|
||||
holder.tvReportSrc.visibility = View.VISIBLE
|
||||
holder.tvReportAction.visibility = View.VISIBLE
|
||||
}else{
|
||||
holder.tvReportShowStatus.text = "展开"
|
||||
holder.tvReportReason.visibility = View.GONE
|
||||
holder.tvReportSrc.visibility = View.GONE
|
||||
holder.tvReportAction.visibility = View.GONE
|
||||
}
|
||||
holder.tvReportShowStatus.setOnClickListener {
|
||||
if (!reportEntity.isShow) {
|
||||
reportEntity.isShow = true
|
||||
holder.tvReportShowStatus.text = "收起"
|
||||
holder.tvReportReason.visibility = View.VISIBLE
|
||||
holder.tvReportSrc.visibility = View.VISIBLE
|
||||
holder.tvReportAction.visibility = View.VISIBLE
|
||||
} else {
|
||||
reportEntity.isShow = false
|
||||
holder.tvReportShowStatus.text = "展开"
|
||||
holder.tvReportReason.visibility = View.GONE
|
||||
holder.tvReportSrc.visibility = View.GONE
|
||||
holder.tvReportAction.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
reportBean?.let {
|
||||
if(reportMsgBox.timestamp == it.timestamp){
|
||||
holder.tvReportShowStatus.performClick()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
//运营平台
|
||||
is MsgBoxOperation -> {
|
||||
data?.let {
|
||||
val operationMsg = it[position].bean as OperationMsg
|
||||
holder.tvOperationContent.text = operationMsg.content
|
||||
holder.tvOperationTime.text =
|
||||
TimeUtils.millis2String(operationMsg.timestamp, getHourMinFormat())
|
||||
}
|
||||
}
|
||||
//运营平台还车通知
|
||||
is MsgBoxOperationReturn -> {
|
||||
data?.let {
|
||||
val operationReturnMsg = it[position].bean as OperationMsg
|
||||
holder.tvOperationReturnContent.text = operationReturnMsg.content
|
||||
holder.tvOperationReturnTime.text =
|
||||
TimeUtils.millis2String(operationReturnMsg.timestamp, getHourMinFormat())
|
||||
}
|
||||
}
|
||||
//运营平台靠边停车
|
||||
is MsgBoxOperationStop -> {
|
||||
data?.let {
|
||||
val operationStopMsg = it[position].bean as OperationMsg
|
||||
holder.tvOperationStopTime.text =
|
||||
TimeUtils.millis2String(operationStopMsg.timestamp, getHourMinFormat())
|
||||
holder.tvOperationStopContent.text = operationStopMsg.content
|
||||
}
|
||||
}
|
||||
//运营平台开关门失败
|
||||
is MsgBoxOperationDoor -> {
|
||||
data?.let{
|
||||
val operationDoorMsg = it[position].bean as OperationMsg
|
||||
holder.tvOperationDoorTime.text =
|
||||
TimeUtils.millis2String(operationDoorMsg.timestamp, getHourMinFormat())
|
||||
holder.tvOperationDoorContent.text = operationDoorMsg.content
|
||||
}
|
||||
}
|
||||
//官方公告
|
||||
is MsgBoxNotice -> {
|
||||
data?.let {
|
||||
val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg
|
||||
if (noticeFrCloudMsg.type == 0) {
|
||||
val noticeNormalData = noticeFrCloudMsg.noticeNormalData
|
||||
holder.tvNoticeTime.text =
|
||||
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
|
||||
holder.tvNoticeContent.text = noticeNormalData?.content
|
||||
GlideApp.with(activity).load(noticeNormalData?.imageUrl).optionalTransform(
|
||||
GlideRoundedCornersTransform(
|
||||
20f,
|
||||
GlideRoundedCornersTransform.CornerType.ALL
|
||||
)
|
||||
).into(holder.ivNoticeImage)
|
||||
holder.tvNoticeCheck.setOnClickListener {
|
||||
//云公告
|
||||
noticeNormalData?.let { it1 -> CallerHmiManager.showNoticeNormalData(it1) }
|
||||
}
|
||||
} else if (noticeFrCloudMsg.type == 1) {
|
||||
val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData
|
||||
holder.tvNoticeTime.text =
|
||||
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
|
||||
holder.tvNoticeContent.text = noticeTrafficStylePushData?.content
|
||||
GlideApp.with(activity).load(noticeTrafficStylePushData?.poiImgUrl)
|
||||
.optionalTransform(
|
||||
GlideRoundedCornersTransform(
|
||||
20f,
|
||||
GlideRoundedCornersTransform.CornerType.ALL
|
||||
)
|
||||
).into(holder.ivNoticeImage)
|
||||
holder.tvNoticeCheck.setOnClickListener {
|
||||
//云公告
|
||||
noticeTrafficStylePushData?.let { it1 ->
|
||||
CallerHmiManager.showTrafficBanner(
|
||||
it1
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
is MsgBoxV2X -> {
|
||||
data?.let {
|
||||
val msgBoxBean = it[position]
|
||||
val v2XMsg = msgBoxBean.bean as V2XMsg
|
||||
holder.tvV2XTime.text =
|
||||
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
|
||||
holder.tvV2XContent.text = v2XMsg.content
|
||||
holder.ivV2XImage.setImageDrawable(ResourcesCompat.getDrawable(activity.resources,EventTypeEnumNew.getUpdateIconRes(v2XMsg.type),null))
|
||||
if(v2XMsg.type== EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.poiType||v2XMsg.type == EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType){
|
||||
holder.itemView.setBackgroundResource(R.drawable.bg_temp_v2x_success)
|
||||
}else{
|
||||
holder.itemView.setBackgroundResource(R.drawable.bg_msg_box_v2x)
|
||||
}
|
||||
if(v2XMsg.communicationType.isNullOrEmpty()){
|
||||
holder.tvV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
|
||||
}else{
|
||||
holder.tvV2XTitle.text = String.format(activity.resources.getString(R.string.v2x_title_content),
|
||||
v2XMsg.communicationType,EventTypeEnumNew.getEventTitle(v2XMsg.type))
|
||||
}
|
||||
}
|
||||
}
|
||||
//汇总消息
|
||||
is MsgBoxSummary -> {
|
||||
data?.let {
|
||||
val summaryMsg = it[position].bean as V2XMsg
|
||||
holder.tvSummaryTime.text =
|
||||
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
|
||||
holder.tvSummaryContent.text = summaryMsg.content
|
||||
}
|
||||
}
|
||||
//SSM连接状态消息
|
||||
is MsgBoxSsm -> {
|
||||
data?.let {
|
||||
val ssmMsg = it[position].bean as SSMMsg
|
||||
holder.tvSsmTitle.text = ssmMsg.title
|
||||
holder.tvSsmContent.text = ssmMsg.content
|
||||
holder.tvSsmTime.text = TimeUtils.millis2String(ssmMsg.timestamp,getHourMinFormat())
|
||||
}
|
||||
}
|
||||
//域控制器连接状态消息
|
||||
is MsgBoxAutopilot ->{
|
||||
data?.let {
|
||||
val autopilotMsg = it[position].bean as AutopilotMsg
|
||||
holder.tvAutopilotTitle.text = autopilotMsg.title
|
||||
holder.tvAutopilotContent.text = autopilotMsg.content
|
||||
holder.tvAutopilotTime.text = TimeUtils.millis2String(autopilotMsg.timestamp,getHourMinFormat())
|
||||
}
|
||||
}
|
||||
//fsm消息
|
||||
is MsgBoxFSM ->{
|
||||
data?.let {
|
||||
val fsmMsg = it[position].bean as FSMMsg
|
||||
holder.tvFSMTitle.text = fsmMsg.title
|
||||
holder.tvFSMContent.text = fsmMsg.content
|
||||
holder.tvFSMTime.text = TimeUtils.millis2String(fsmMsg.timestamp,getHourMinFormat())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount() = data?.size ?: 0
|
||||
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
return if (data!![position].type == MsgBoxType.OPERATION) {
|
||||
when ((data!![position].bean as OperationMsg).type) {
|
||||
0 -> {
|
||||
//运营平台还车通知
|
||||
operationReturn
|
||||
}
|
||||
1 -> {
|
||||
//运营平台靠边停车
|
||||
operationStop
|
||||
}
|
||||
3 -> {
|
||||
//开关门失败
|
||||
operationDoorSwitchFail
|
||||
}
|
||||
else -> {
|
||||
//普通运营平台
|
||||
operation
|
||||
}
|
||||
}
|
||||
} else if (data!![position].type == MsgBoxType.NOTICE) {
|
||||
notice
|
||||
} else if (data!![position].type == MsgBoxType.V2X && data!![position].sourceType == DataSourceType.SUMMARY) {
|
||||
summary
|
||||
} else if (data!![position].type == MsgBoxType.REPORT) {
|
||||
report
|
||||
} else if (data!![position].type == MsgBoxType.RECORD) {
|
||||
record
|
||||
} else if(data!![position].type == MsgBoxType.FMINFO){
|
||||
fm
|
||||
} else if(data!![position].type == MsgBoxType.SSMINFO){
|
||||
ssm
|
||||
} else if(data!![position].type == MsgBoxType.AUTOPILOT){
|
||||
autopilot
|
||||
} else if(data!![position].type == MsgBoxType.FSM){
|
||||
fsm
|
||||
} else if(data!![position].type == MsgBoxType.V2X || data!![position].type == MsgBoxType.OBU){
|
||||
v2x
|
||||
} else {
|
||||
none
|
||||
}
|
||||
}
|
||||
|
||||
//录包实体
|
||||
class BadCaseHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
var tvBagRecordTime: TextView = itemView.findViewById(R.id.tvBagRecordTime)
|
||||
var tvBagReceiveTime: TextView = itemView.findViewById(R.id.tvBagReceiveTime)
|
||||
var tvRecordCheck: TextView = itemView.findViewById(R.id.tvRecordCheck)
|
||||
}
|
||||
|
||||
//FM信息
|
||||
class FmInfoHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var ivFmImage: ImageView = itemView.findViewById(R.id.ivFmImage) //故障级别图标
|
||||
var tvFmTitle: TextView = itemView.findViewById(R.id.tvFmTitle) //标题展示故障策略
|
||||
var tvFmShowTime: TextView = itemView.findViewById(R.id.tvFmShowTime) //展示时间
|
||||
var tvFmShowStatus: TextView = itemView.findViewById(R.id.tvFmShowStatus) //折叠状态
|
||||
var tvFmTime: TextView = itemView.findViewById(R.id.tvFmTime) //发生时间
|
||||
var tvFmAction: TextView = itemView.findViewById(R.id.tvFmAction) //建议操作
|
||||
var tvFmFault: TextView = itemView.findViewById(R.id.tvFmFault) //故障策略
|
||||
var tvFmReason: TextView = itemView.findViewById(R.id.tvFmReason) //故障原因
|
||||
var tvFmResult: TextView = itemView.findViewById(R.id.tvFmResult) //后果
|
||||
}
|
||||
|
||||
//车辆系统信息
|
||||
class MsgBoxIpcReportHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
var ivReportImage: ImageView = itemView.findViewById(R.id.ivReportImage)
|
||||
var tvReportLevel: TextView = itemView.findViewById(R.id.tvReportLevel)
|
||||
var tvReportTime: TextView = itemView.findViewById(R.id.tvReportTime)
|
||||
var tvReportType: TextView = itemView.findViewById(R.id.tvReportType)
|
||||
var tvReportReason: TextView = itemView.findViewById(R.id.tvReportReason)
|
||||
var tvReportSrc: TextView = itemView.findViewById(R.id.tvReportSrc)
|
||||
var tvReportAction: TextView = itemView.findViewById(R.id.tvReportAction)
|
||||
var tvReportShowTime: TextView = itemView.findViewById(R.id.tvReportShowTime)
|
||||
var tvReportShowStatus: TextView = itemView.findViewById(R.id.tvReportShowStatus)
|
||||
}
|
||||
|
||||
//运营平台
|
||||
class MsgBoxOperation(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
var ivOperationImage: ImageView = itemView.findViewById(R.id.ivOperationImage)
|
||||
var tvOperationTitle: TextView = itemView.findViewById(R.id.tvOperationTitle)
|
||||
var tvOperationContent: TextView = itemView.findViewById(R.id.tvOperationContent)
|
||||
var tvOperationTime: TextView = itemView.findViewById(R.id.tvOperationTime)
|
||||
}
|
||||
|
||||
//运营平台还车通知
|
||||
class MsgBoxOperationReturn(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var tvOperationReturnTime: TextView = itemView.findViewById(R.id.tvOperationReturnTime)
|
||||
var tvOperationReturnContent: TextView = itemView.findViewById(R.id.tvOperationReturnContent)
|
||||
}
|
||||
|
||||
//运营平台靠边停车通知
|
||||
class MsgBoxOperationStop(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var tvOperationStopTime: TextView = itemView.findViewById(R.id.tvOperationStopTime)
|
||||
var tvOperationStopContent: TextView = itemView.findViewById(R.id.tvOperationStopContent)
|
||||
}
|
||||
//运营平台开关门失败
|
||||
class MsgBoxOperationDoor(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var tvOperationDoorTime: TextView = itemView.findViewById(R.id.tvOperationDoorTime)
|
||||
var tvOperationDoorContent: TextView = itemView.findViewById(R.id.tvOperationDoorContent)
|
||||
}
|
||||
//Notice
|
||||
class MsgBoxNotice(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
var ivNoticeImage: ImageView = itemView.findViewById(R.id.ivNoticeImage)
|
||||
var tvNoticeTime: TextView = itemView.findViewById(R.id.tvNoticeTime)
|
||||
var tvNoticeCheck: TextView = itemView.findViewById(R.id.tvNoticeCheck)
|
||||
var tvNoticeContent: TextView = itemView.findViewById(R.id.tvNoticeContent)
|
||||
}
|
||||
|
||||
//V2X,OBU
|
||||
class MsgBoxV2X(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
var ivV2XImage: ImageView = itemView.findViewById(R.id.ivV2XImage)
|
||||
var tvV2XTime: TextView = itemView.findViewById(R.id.tvV2XTime)
|
||||
var tvV2XContent: TextView = itemView.findViewById(R.id.tvV2XContent)
|
||||
var tvV2XTitle: TextView = itemView.findViewById(R.id.tvV2XTitle)
|
||||
}
|
||||
|
||||
//汇总消息
|
||||
class MsgBoxSummary(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
var tvSummaryContent: TextView = itemView.findViewById(R.id.tvSummaryContent)
|
||||
var tvSummaryTime: TextView = itemView.findViewById(R.id.tvSummaryTime)
|
||||
}
|
||||
|
||||
//SSM连接状态
|
||||
class MsgBoxSsm(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var ivSsmImage: ImageView = itemView.findViewById(R.id.ivSsmImage)
|
||||
var tvSsmTitle: TextView = itemView.findViewById(R.id.tvSsmTitle)
|
||||
var tvSsmTime: TextView = itemView.findViewById(R.id.tvSsmTime)
|
||||
var tvSsmContent: TextView = itemView.findViewById(R.id.tvSsmContent)
|
||||
}
|
||||
|
||||
//域控制器连接状态
|
||||
class MsgBoxAutopilot(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var ivAutopilotImage: ImageView = itemView.findViewById(R.id.ivAutopilotImage)
|
||||
var tvAutopilotTitle: TextView = itemView.findViewById(R.id.tvAutopilotTitle)
|
||||
var tvAutopilotTime: TextView = itemView.findViewById(R.id.tvAutopilotTime)
|
||||
var tvAutopilotContent: TextView = itemView.findViewById(R.id.tvAutopilotContent)
|
||||
}
|
||||
|
||||
//fsm状态
|
||||
class MsgBoxFSM(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var ivFSMImage: ImageView = itemView.findViewById(R.id.ivFSMImage)
|
||||
var tvFSMTitle: TextView = itemView.findViewById(R.id.tvFSMTitle)
|
||||
var tvFSMTime: TextView = itemView.findViewById(R.id.tvFSMTime)
|
||||
var tvFSMContent: TextView = itemView.findViewById(R.id.tvFSMContent)
|
||||
}
|
||||
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivAutopilotImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:src="@drawable/icon_warning_take_over"
|
||||
android:contentDescription="@string/autopilot_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAutopilotTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivAutopilotImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivAutopilotImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_38"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAutopilotTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvAutopilotTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvAutopilotTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textColor="#999999"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAutopilotContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvAutopilotTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvAutopilotTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvAutopilotTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<!--故障级别图标-->
|
||||
<ImageView
|
||||
android:id="@+id/ivFmImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/fm_icon"
|
||||
/>
|
||||
|
||||
<!--标题展示故障策略-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmTitle"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivFmImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivFmImage"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvFmShowTime"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:textColor="@color/white"
|
||||
/>
|
||||
|
||||
<!--展示时间-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmShowTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvFmTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvFmTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textColor="#999999"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
<!--折叠状态-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmShowStatus"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:text="@string/fm_open"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#2EACFF"
|
||||
/>
|
||||
|
||||
<!--发生时间-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmTime"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvFmTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvFmTitle"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvFmShowTime"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
<!--建议操作-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmAction"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvFmTime"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvFmTime"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvFmShowTime"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
<!--故障策略-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmFault"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvFmAction"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvFmAction"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvFmShowTime"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--故障原因-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmReason"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvFmFault"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvFmFault"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvFmShowTime"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!--后果-->
|
||||
<TextView
|
||||
android:id="@+id/tvFmResult"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvFmReason"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvFmReason"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvFmShowTime"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivFSMImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:src="@drawable/icon_warning_take_over"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/fsm_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvFSMTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivFSMImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivFSMImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:textColor="@color/white"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvFSMTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvFSMTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvFSMTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvFSMContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvFSMTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvFSMTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvFSMTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivReportImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/report_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportLevel"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivReportImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivReportImage"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReportShowTime"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportTime"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReportLevel"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvReportLevel"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReportShowTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportType"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReportTime"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvReportTime"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReportShowTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportReason"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReportType"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvReportType"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReportShowTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportSrc"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReportReason"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvReportReason"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReportShowTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportAction"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReportSrc"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvReportSrc"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReportShowTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportShowTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvReportLevel"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvReportLevel"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textColor="#999999"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReportShowStatus"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="@string/report_open"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#2EACFF"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivNoticeImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
android:src="@drawable/icon_tab_notice"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/notice_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNoticeTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivNoticeImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivNoticeImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:text="@string/notice_title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_38"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNoticeTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvNoticeTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvNoticeTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNoticeCheck"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
android:text="@string/notice_check"
|
||||
android:textColor="#2EACFF"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNoticeContent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvNoticeTitle"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvNoticeCheck"
|
||||
app:layout_constraintTop_toTopOf="@id/tvNoticeCheck"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvNoticeCheck"
|
||||
android:gravity="start"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivOperationImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:src="@drawable/icon_msg_box_operation"
|
||||
android:contentDescription="@string/operation_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivOperationImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivOperationImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:text="@string/operation_title"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:textColor="@color/white"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvOperationTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvOperationTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvOperationTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvOperationTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivOperationDoorImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:src="@drawable/v2x_icon_shigu_sanjiaopai"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:layout_marginBottom="@dimen/dp_40"
|
||||
android:contentDescription="@string/operation_door_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ivOperationDoorTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivOperationDoorImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivOperationDoorImage"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:textColor="@color/white"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:text="@string/operation_door_title"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationDoorTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivOperationDoorTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ivOperationDoorTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationDoorContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="@id/ivOperationDoorTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvOperationDoorTime"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ivOperationDoorImage"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivOperationReturnImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
android:src="@drawable/icon_msg_box_operation_return"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:layout_marginBottom="@dimen/dp_40"
|
||||
android:contentDescription="@string/operation_return_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationReturnTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/operation_return_title"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_38"
|
||||
app:layout_constraintTop_toTopOf="@id/ivOperationReturnImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivOperationReturnImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationReturnTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvOperationReturnTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvOperationReturnTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationReturnContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvOperationReturnTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvOperationReturnTime"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ivOperationReturnImage"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:gravity="start"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivOperationStopImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:src="@drawable/icon_msg_box_operation_stop"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:layout_marginBottom="@dimen/dp_40"
|
||||
android:contentDescription="@string/operation_stop_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ivOperationStopTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivOperationStopImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivOperationStopImage"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:textColor="@color/white"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:text="@string/operation_stop_title"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationStopTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivOperationStopTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ivOperationStopTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvOperationStopContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="@id/ivOperationStopTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvOperationStopTime"
|
||||
app:layout_constraintBottom_toBottomOf="@id/ivOperationStopImage"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivSsmImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:src="@drawable/icon_warning_take_over"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/ssm_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSsmTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivSsmImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivSsmImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_38"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSsmTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvSsmTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvSsmTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSsmContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvSsmTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvSsmTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvSsmTime"
|
||||
android:textColor="#CCCCCC"
|
||||
android:textSize="@dimen/sp_32"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivSummaryImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:src="@drawable/icon_tab_notice"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/summary_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSummaryTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivSummaryImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivSummaryImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:text="@string/summary_title"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSummaryTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvSummaryTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvSummaryTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSummaryContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvSummaryTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvSummaryTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvSummaryTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
android:gravity="start"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivV2XImage"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_40"
|
||||
android:contentDescription="@string/v2x_icon"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvV2XTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/ivV2XImage"
|
||||
app:layout_constraintLeft_toRightOf="@id/ivV2XImage"
|
||||
android:layout_marginStart="@dimen/dp_30"
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:textColor="@color/white"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvV2XTime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/tvV2XTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvV2XTitle"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#999999"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvV2XContent"
|
||||
android:layout_width="@dimen/dp_0"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvV2XTitle"
|
||||
app:layout_constraintLeft_toLeftOf="@id/tvV2XTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvV2XTime"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="#CCCCCC"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/dp_880"
|
||||
android:layout_height="@dimen/dp_997"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/bg_msg_box"
|
||||
android:background="@drawable/bg_tab_item"
|
||||
>
|
||||
|
||||
<TextView
|
||||
@@ -15,8 +15,9 @@
|
||||
android:textSize="@dimen/sp_40"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_26"
|
||||
android:layout_marginStart="@dimen/dp_66"
|
||||
android:paddingTop="@dimen/dp_38"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:gravity="center_horizontal"
|
||||
android:background="@drawable/bg_msg_box_title_selected"
|
||||
/>
|
||||
@@ -31,6 +32,7 @@
|
||||
android:textSize="@dimen/sp_40"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingTop="@dimen/dp_38"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@id/tvMsgNotice"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvMsgIpcReport"
|
||||
@@ -46,6 +48,7 @@
|
||||
android:textSize="@dimen/sp_38"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingTop="@dimen/dp_38"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@id/tvMsgFm"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvMsgBadCase"
|
||||
@@ -61,9 +64,10 @@
|
||||
android:textSize="@dimen/sp_40"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingTop="@dimen/dp_38"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_26"
|
||||
android:layout_marginEnd="@dimen/dp_66"
|
||||
/>
|
||||
|
||||
|
||||
@@ -185,5 +185,25 @@
|
||||
<string name="report_icon">系统信息图标</string>
|
||||
<string name="report_retract">收起</string>
|
||||
<string name="report_open">展开</string>
|
||||
<string name="fm_icon">FM图标</string>
|
||||
<string name="fm_retract">收起</string>
|
||||
<string name="fm_open">展开</string>
|
||||
<string name="operation_icon">运营图标</string>
|
||||
<string name="operation_title">运营平台</string>
|
||||
<string name="operation_return_icon">还车通知图标</string>
|
||||
<string name="operation_return_title">还车通知</string>
|
||||
<string name="operation_stop_icon">靠边停车图标</string>
|
||||
<string name="operation_stop_title">靠边停车</string>
|
||||
<string name="operation_door_icon">运营平台开关门失败图标</string>
|
||||
<string name="operation_door_title">运营平台</string>
|
||||
<string name="notice_icon">官方公告图标</string>
|
||||
<string name="notice_title">官方公告</string>
|
||||
<string name="notice_check">查看</string>
|
||||
<string name="summary_icon">汇总消息图标</string>
|
||||
<string name="summary_title">蘑菇小助手</string>
|
||||
<string name="ssm_icon">SSM图标</string>
|
||||
<string name="autopilot_icon">域控制器连接状态图标</string>
|
||||
<string name="fsm_icon">FSM图标</string>
|
||||
<string name="v2x_icon">V2X图标</string>
|
||||
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user