[8.1.0]
[fea] [m2] [线路展示]
@@ -8,6 +8,7 @@
|
||||
<color name="taxi_111533">#111533</color>
|
||||
<color name="taxi_878890">#878890</color>
|
||||
<color name="taxi_EF262C">#EF262C</color>
|
||||
<color name="common_color_00000000">#00000000</color>
|
||||
<color name="common_color_4D000000">#4D000000</color>
|
||||
<color name="common_color_99000000">#99000000</color>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback
|
||||
import com.mogo.och.shuttle.weaknet.passenger.constant.M2Const.Companion.M2_MAP_STATION_MAKER
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.PM2ADASModel
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.PM2HPMapFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.map.PM2HPMapFragment
|
||||
|
||||
class PM2ADASPresenter(view: PM2HPMapFragment?) :
|
||||
Presenter<PM2HPMapFragment?>(view), ADASCallback, ICommonCallback {
|
||||
@@ -52,7 +52,6 @@ class PM2ADASPresenter(view: PM2HPMapFragment?) :
|
||||
}
|
||||
|
||||
override fun showNoTaskView(isTrue: Boolean) {
|
||||
super.showNoTaskView(isTrue)
|
||||
ThreadUtils.runOnUiThread {
|
||||
mView?.showNoTaskView(!isTrue)
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.presenter
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.commons.mvp.Presenter
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.PM2ADASModel
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.PM2DrivingInfoFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.line.PM2DrivingInfoFragment
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel
|
||||
@@ -38,18 +37,7 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) :
|
||||
}
|
||||
|
||||
override fun updateSpeed(speed: Int) {
|
||||
// CallerLogger.d(
|
||||
// SceneConstant.M_BUS_P + "speed = ",speed.toString()
|
||||
// )
|
||||
ThreadUtils.runOnUiThread {
|
||||
mView?.updateSpeed(speed)
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateLineInfo(lineName: String) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
mView?.updateTaskName(lineName)
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateRemainMT(meters: Long, timeInSecond: Long) {
|
||||
@@ -58,11 +46,11 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) :
|
||||
}
|
||||
}
|
||||
|
||||
override fun showNoTaskView(isTrue: Boolean) {
|
||||
override fun showNoTaskView(empty: Boolean) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
mView?.showNoTaskView(!isTrue)
|
||||
mView?.showNoTaskView(empty)
|
||||
}
|
||||
if (isTrue){
|
||||
if (empty){
|
||||
PM2ADASModel.INSTANCE.removeHDMapStations()
|
||||
}
|
||||
}
|
||||
@@ -75,11 +63,5 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) :
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateAutoStatus(isOpen: Boolean) {
|
||||
BizLoopManager.runInMainThread {
|
||||
mView?.updateAutoStatus(isOpen)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -12,6 +12,8 @@ import com.mogo.och.common.module.manager.transform.OchTransformDispatch
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2Presenter
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayerFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.line.PM2DrivingInfoFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.map.PM2HPMapFragment
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_fragment.tv_shuttle_b2_p_version
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_fragment.video_fragment
|
||||
|
||||
@@ -23,22 +25,28 @@ import kotlinx.android.synthetic.main.shuttle_p_m2_fragment.video_fragment
|
||||
class PM2BaseFragment :
|
||||
MvpFragment<PM2BaseFragment?, PM2Presenter?>() {
|
||||
|
||||
private var drivingFragment : PM2DrivingInfoFragment? = null
|
||||
private var hdMapFragment : PM2HPMapFragment? = null
|
||||
private var mediaFragment : MediaPlayerFragment? = null
|
||||
val TAG = PM2BaseFragment::class.java.simpleName
|
||||
|
||||
private val ochTransform = object : OchTransformDispatch{
|
||||
private var drivingFragment: PM2DrivingInfoFragment? = null
|
||||
private var hdMapFragment: PM2HPMapFragment? = null
|
||||
private var mediaFragment: MediaPlayerFragment? = null
|
||||
|
||||
// 视频直播流
|
||||
private val ochTransform = object : OchTransformDispatch {
|
||||
override fun setVideoView(target: View?) {
|
||||
super.setVideoView(target)
|
||||
if(target!=null){
|
||||
BizLoopManager.runInMainThread{
|
||||
if (target != null) {
|
||||
BizLoopManager.runInMainThread {
|
||||
target.id = R.id.video_show
|
||||
val params = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT)
|
||||
video_fragment.addView(target,params)
|
||||
val params = FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT
|
||||
)
|
||||
video_fragment.addView(target, params)
|
||||
MediaManager.setMediaPause()
|
||||
}
|
||||
}else{
|
||||
BizLoopManager.runInMainThread{
|
||||
} else {
|
||||
BizLoopManager.runInMainThread {
|
||||
findViewById<View>(R.id.video_show)?.let {
|
||||
video_fragment.removeView(it)
|
||||
MediaManager.setMediaResume()
|
||||
@@ -58,9 +66,8 @@ class PM2BaseFragment :
|
||||
|
||||
override fun initViews() {
|
||||
tv_shuttle_b2_p_version.text = "版本:${AppUtils.getAppVersionName()}"
|
||||
//隐藏小地图
|
||||
initFragment()
|
||||
OchTransform.addListener(TAG,ochTransform)
|
||||
OchTransform.addListener(TAG, ochTransform)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
@@ -90,7 +97,4 @@ class PM2BaseFragment :
|
||||
return PM2Presenter(this)
|
||||
}
|
||||
|
||||
companion object {
|
||||
public val TAG = PM2BaseFragment::class.java.simpleName
|
||||
}
|
||||
}
|
||||
@@ -1,185 +0,0 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2DrivingPresenter
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.auto_tv
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.speed_tv
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/4/12
|
||||
*/
|
||||
class PM2DrivingInfoFragment :
|
||||
MvpFragment<PM2DrivingInfoFragment?, PM2DrivingPresenter?>() {
|
||||
|
||||
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.shuttle_p_m2_driving_info_fragment
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return TAG
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
speed_tv.setOnLongClickListener {
|
||||
context?.let { ToggleDebugView.toggleDebugView.toggle(it) }
|
||||
true
|
||||
}
|
||||
//
|
||||
// line_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_line_name_tv_color))
|
||||
// station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_line_name_tv_color))
|
||||
}
|
||||
|
||||
override fun initViews(savedInstanceState: Bundle?) {
|
||||
super.initViews(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
mPresenter?.onDestroy(this)
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
fun updateSpeed(speed: Int) {
|
||||
speed_tv.text = speed.toString()
|
||||
}
|
||||
|
||||
fun updateTaskName(name: String) {
|
||||
//line_name_tv.text = name
|
||||
}
|
||||
|
||||
fun showNoTaskView(haveTask: Boolean) {
|
||||
if (!haveTask) {
|
||||
updateNoOrderUI()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateNoOrderUI() {
|
||||
//line_name_tv.text = resources.getString(R.string.shuttle_p_m2_not_select_line_content)
|
||||
updateNoStationView()
|
||||
|
||||
}
|
||||
|
||||
private fun updateNoStationView() {
|
||||
// station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_next_tv_color))
|
||||
// station_name_tv.text = resources.getString(R.string.shuttle_p_m2_empty_tv)
|
||||
// tv_distance.text = resources.getString(R.string.shuttle_p_m2_empty_remain_km)
|
||||
// tv_left_time.text = resources.getString(R.string.shuttle_p_m2_empty_remain_minute)
|
||||
noLineShow()
|
||||
}
|
||||
|
||||
override fun createPresenter(): PM2DrivingPresenter {
|
||||
return PM2DrivingPresenter(this)
|
||||
}
|
||||
|
||||
fun updateAutoStatus(isAutoPilot: Boolean) {
|
||||
context?.let {
|
||||
if (isAutoPilot) {
|
||||
auto_tv.setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF))
|
||||
auto_tv.background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_in)
|
||||
} else {
|
||||
auto_tv.setTextColor(ContextCompat.getColor(it, R.color.common_284F7E))
|
||||
auto_tv.background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_out)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun updateStationsInfo(stations: MutableList<BusStationBean>, i: Int, isArrived: Boolean) {
|
||||
if (stations.size == 0) return
|
||||
// if (0 <= i && i < stations.size) {
|
||||
// station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_next_tv_color))
|
||||
// station_name_tv.text = stations[i].name
|
||||
// }
|
||||
// if (isArrived) {//到站
|
||||
// tv_distance.text = resources.getString(R.string.shuttle_p_m2_empty_remain_km)
|
||||
// tv_left_time.text = resources.getString(R.string.shuttle_p_m2_empty_remain_minute)
|
||||
// tv_next_station_title.text =
|
||||
// resources.getString(R.string.shuttle_p_m2_station_title_arrived_tv)
|
||||
// haveLineAndArrivedStation()
|
||||
// } else { //前往目的地中
|
||||
// tv_next_station_title.text =
|
||||
// resources.getString(R.string.shuttle_p_m2_next_station_title)
|
||||
// haveLineAndArriveingStation()
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* 剩余里程和时间
|
||||
*/
|
||||
fun updateRemainMT(meters: Long, timeInSecond: Long) { //米。秒
|
||||
var disUnit = "公里"
|
||||
var remainDis: String? = "0"
|
||||
|
||||
if (meters > 0) {
|
||||
if (meters / 1000 < 1) {
|
||||
disUnit = "米"
|
||||
remainDis = meters.toFloat().roundToInt().toString()
|
||||
} else {
|
||||
disUnit = "公里"
|
||||
remainDis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
|
||||
}
|
||||
}
|
||||
|
||||
val time = ceil(timeInSecond / 60f).toInt()
|
||||
|
||||
// "$remainDis$disUnit".also { tv_distance.text = it }
|
||||
// "${time}分钟".also { tv_left_time.text = it }
|
||||
}
|
||||
|
||||
fun noLineShow() {
|
||||
// 没有线路展示
|
||||
// group_not_select_line.visibility = View.VISIBLE
|
||||
// // 下一个站点
|
||||
// group_stationinfo.visibility = View.GONE
|
||||
// // 距离和剩余大概时间
|
||||
// clg_distance_left_time.visibility = View.GONE
|
||||
// // 到达站点
|
||||
// tv_arrived_notice.visibility = View.GONE
|
||||
//
|
||||
// iv_animal_list.visibility = View.GONE
|
||||
}
|
||||
|
||||
// 有线路正在到站点
|
||||
fun haveLineAndArriveingStation() {
|
||||
// group_not_select_line.visibility = View.GONE
|
||||
// group_stationinfo.visibility = View.VISIBLE
|
||||
// clg_distance_left_time.visibility = View.VISIBLE
|
||||
// tv_arrived_notice.visibility = View.GONE
|
||||
// iv_animal_list.visibility = View.GONE
|
||||
}
|
||||
|
||||
// 有线路到达站点
|
||||
private fun haveLineAndArrivedStation() {
|
||||
// group_not_select_line.visibility = View.GONE
|
||||
// group_stationinfo.visibility = View.VISIBLE
|
||||
// clg_distance_left_time.visibility = View.GONE
|
||||
// tv_arrived_notice.visibility = View.VISIBLE
|
||||
// iv_animal_list.visibility = View.VISIBLE
|
||||
// val animationDrawable = iv_animal_list.drawable as AnimationDrawable
|
||||
// animationDrawable.start()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG = PM2DrivingInfoFragment::class.java.simpleName
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2DrivingPresenter
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.arriveView
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.emptyView
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.lineView
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/4/12
|
||||
*/
|
||||
class PM2DrivingInfoFragment :
|
||||
MvpFragment<PM2DrivingInfoFragment?, PM2DrivingPresenter?>() {
|
||||
|
||||
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.shuttle_p_m2_driving_info_fragment
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return TAG
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
|
||||
}
|
||||
|
||||
override fun initViews(savedInstanceState: Bundle?) {
|
||||
super.initViews(savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
mPresenter?.onDestroy(this)
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
fun showNoTaskView(haveTask: Boolean) {
|
||||
if(haveTask){
|
||||
emptyView.visibility = View.VISIBLE
|
||||
arriveView.visibility = View.GONE
|
||||
lineView.visibility = View.GONE
|
||||
}else{
|
||||
emptyView.visibility = View.GONE
|
||||
arriveView.visibility = View.GONE
|
||||
lineView.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): PM2DrivingPresenter {
|
||||
return PM2DrivingPresenter(this)
|
||||
}
|
||||
|
||||
fun updateStationsInfo(stations: MutableList<BusStationBean>, i: Int, isArrived: Boolean) {
|
||||
if(stations.isEmpty()){
|
||||
emptyView.visibility = View.VISIBLE
|
||||
arriveView.visibility = View.GONE
|
||||
lineView.visibility = View.GONE
|
||||
}else{
|
||||
if(isArrived&&i!=0){
|
||||
emptyView.visibility = View.GONE
|
||||
arriveView.visibility = View.VISIBLE
|
||||
lineView.visibility = View.GONE
|
||||
arriveView.setArrivedStation(stations.get(i))
|
||||
}else{
|
||||
emptyView.visibility = View.GONE
|
||||
arriveView.visibility = View.GONE
|
||||
lineView.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 剩余里程和时间
|
||||
*/
|
||||
fun updateRemainMT(meters: Long, timeInSecond: Long) { //米。秒
|
||||
var disUnit = "公里"
|
||||
var remainDis: String? = "0"
|
||||
|
||||
if (meters > 0) {
|
||||
if (meters / 1000 < 1) {
|
||||
disUnit = "米"
|
||||
remainDis = meters.toFloat().roundToInt().toString()
|
||||
} else {
|
||||
disUnit = "公里"
|
||||
remainDis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
|
||||
}
|
||||
}
|
||||
|
||||
val time = ceil(timeInSecond / 60f).toInt()
|
||||
|
||||
// "$remainDis$disUnit".also { tv_distance.text = it }
|
||||
// "${time}分钟".also { tv_left_time.text = it }
|
||||
}
|
||||
|
||||
|
||||
companion object {
|
||||
private val TAG = PM2DrivingInfoFragment::class.java.simpleName
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.arrive
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.m2_arrive_view.view.ochtv_arrive_station_value
|
||||
|
||||
class ArrivedView : ConstraintLayout {
|
||||
|
||||
private val TAG = "EmptyView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.m2_arrive_view, this, true)
|
||||
|
||||
ochtv_arrive_station_value.setVertrial(true)
|
||||
val intArrayOf = intArrayOf(
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe),
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb),
|
||||
)
|
||||
ochtv_arrive_station_value.setmColorList(intArrayOf)
|
||||
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
}
|
||||
|
||||
fun setArrivedStation(busStationBean: BusStationBean) {
|
||||
BizLoopManager.runInMainThread{
|
||||
ochtv_arrive_station_value.text = busStationBean.name
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
|
||||
import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.m2_speed.view.tv_speed
|
||||
import kotlin.math.abs
|
||||
|
||||
class AutopilotView : ConstraintLayout {
|
||||
|
||||
private val TAG = "ItineraryView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.m2_autopilot, this, true)
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.widget
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.light
|
||||
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ObjectAnimator
|
||||
@@ -16,11 +16,9 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.common.module.manager.light.TurnLightManager
|
||||
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_turn_light_status.view.left_nor_image
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_turn_light_status.view.left_select_image
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_turn_light_status.view.right_nor_image
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_turn_light_status.view.right_select_image
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_turn_light_status.view.turn_light_layout
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.speed
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
|
||||
import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.m2_speed.view.tv_speed
|
||||
import kotlin.math.abs
|
||||
|
||||
class SpeedView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
|
||||
private val TAG = "ItineraryView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.m2_speed, this, true)
|
||||
|
||||
tv_speed.setOnLongClickListener {
|
||||
context?.let { ToggleDebugView.toggleDebugView.toggle(it) }
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
if(isVisible){
|
||||
OchLocationManager.addGCJ02Listener(TAG, 3, this)
|
||||
}else{
|
||||
OchLocationManager.removeGCJ02Listener(TAG)
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
|
||||
mogoLocation?.let {
|
||||
BizLoopManager.runInMainThread {
|
||||
val speedKM = (abs(it.gnssSpeed) * 3.6f).toInt()
|
||||
tv_speed.text = speedKM.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.status
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel
|
||||
|
||||
class StatusView : AppCompatTextView, ICommonCallback {
|
||||
|
||||
private val TAG = "ItineraryView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
private fun initView() {
|
||||
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
if(isVisible){
|
||||
CommonModel.setRouteLineInfoCallback(TAG,this)
|
||||
}else{
|
||||
CommonModel.setRouteLineInfoCallback(TAG,null)
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateAutoStatus(isAutoPilot: Boolean) {
|
||||
BizLoopManager.runInMainThread {
|
||||
context?.let {
|
||||
if (isAutoPilot) {
|
||||
setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF))
|
||||
background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_in)
|
||||
} else {
|
||||
setTextColor(ContextCompat.getColor(it, R.color.common_284F7E))
|
||||
background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_out)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.empty
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.m2_empty_view.view.tv_title
|
||||
|
||||
class EmptyView : ConstraintLayout {
|
||||
|
||||
private val TAG = "EmptyView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.m2_empty_view, this, true)
|
||||
|
||||
tv_title.setVertrial(true)
|
||||
val intArrayOf = intArrayOf(
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe),
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb),
|
||||
)
|
||||
tv_title.setmColorList(intArrayOf)
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo.item.StationAdapter
|
||||
import kotlinx.android.synthetic.main.m2_line_view.view.ll_station_container
|
||||
|
||||
class LineView : ConstraintLayout, LineViewModel.LineViewCallback {
|
||||
|
||||
private val TAG = "EmptyView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private lateinit var mAdapter: StationAdapter
|
||||
|
||||
private lateinit var linearLayoutManager: LinearLayoutManager
|
||||
|
||||
private var viewModel:LineViewModel?=null
|
||||
|
||||
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.m2_line_view, this, true)
|
||||
|
||||
linearLayoutManager = LinearLayoutManager(context)
|
||||
ll_station_container.setLayoutManager(linearLayoutManager)
|
||||
mAdapter = StationAdapter()
|
||||
// ll_station_container.addItemDecoration(
|
||||
// SpacesItemDecoration(
|
||||
// AutoSizeUtils.dp2px(context,20f)
|
||||
// )
|
||||
// )
|
||||
ll_station_container.setAdapter(mAdapter)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
viewModel = findViewTreeViewModelStoreOwner()?.let {
|
||||
ViewModelProvider(it).get(LineViewModel::class.java)
|
||||
}
|
||||
viewModel?.setLineCallback(this)
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateLineStations(stations: MutableList<BusStationBean>?) {
|
||||
CallerLogger.d(TAG,"展示站点:${stations}")
|
||||
mAdapter.submitList(stations)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
||||
/**
|
||||
* @author XuXinChao
|
||||
* @description BadCase录包管理页面
|
||||
* @since: 2022/12/15
|
||||
*/
|
||||
class LineViewModel : ViewModel(), ICommonCallback {
|
||||
|
||||
private val TAG = M_BUS+LineViewModel::class.java.simpleName
|
||||
|
||||
private var viewCallback:LineViewCallback?=null
|
||||
|
||||
private var endTaskDisposable:Disposable?=null
|
||||
|
||||
|
||||
override fun onCleared() {
|
||||
d(TAG,"onCleared")
|
||||
CommonModel.setRouteLineInfoCallback(TAG,null)
|
||||
}
|
||||
|
||||
fun setLineCallback(viewCallback:LineViewCallback){
|
||||
this.viewCallback = viewCallback
|
||||
CommonModel.setRouteLineInfoCallback(TAG,this)
|
||||
}
|
||||
|
||||
override fun updateLineStations(stations: MutableList<BusStationBean>?) {
|
||||
BizLoopManager.runInMainThread{
|
||||
this.viewCallback?.updateLineStations(stations)
|
||||
}
|
||||
}
|
||||
|
||||
interface LineViewCallback{
|
||||
fun updateLineStations(stations: MutableList<BusStationBean>?)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo.item
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
|
||||
class StationAdapter : ListAdapter<BusStationBean, StationViewHolder>(MessageDiffCallback()) {
|
||||
|
||||
var currentIndex = 0
|
||||
var isLeaving = false
|
||||
var showPassOmit = false
|
||||
var showFuluterOmit = false
|
||||
|
||||
override fun submitList(list: MutableList<BusStationBean>?) {
|
||||
val newDataList = mutableListOf<BusStationBean>()
|
||||
list?.let {
|
||||
it.forEachIndexed { index, busStationBean ->
|
||||
if (busStationBean.drivingStatus == 2) {
|
||||
currentIndex = index
|
||||
isLeaving = busStationBean.isLeaving
|
||||
return@forEachIndexed
|
||||
}
|
||||
}
|
||||
if (isLeaving) {
|
||||
currentIndex += 1
|
||||
}
|
||||
if ((it.size) <= 7) {
|
||||
showPassOmit = false
|
||||
showFuluterOmit = false
|
||||
newDataList.addAll(it.toList())
|
||||
} else {
|
||||
if(currentIndex-1<3){
|
||||
showPassOmit = false // 全展示
|
||||
}else{
|
||||
showPassOmit = true // 展示省略
|
||||
}
|
||||
|
||||
if(it.size-(currentIndex+1)-1<3) {// 全展示
|
||||
showFuluterOmit = false
|
||||
}else{// 展示省略
|
||||
showFuluterOmit = true
|
||||
}
|
||||
|
||||
if(showPassOmit&&showFuluterOmit){// 都有
|
||||
newDataList.add(it.first())
|
||||
newDataList.add(StationBeanOmit(currentIndex-1-1))
|
||||
newDataList.addAll(list.slice(currentIndex-1 .. currentIndex+1))
|
||||
newDataList.add(StationBeanOmit(list.size-currentIndex-1))
|
||||
newDataList.add(list.last())
|
||||
}else{
|
||||
if(showFuluterOmit||showPassOmit){
|
||||
if(showFuluterOmit){// 只展示下面的省略号
|
||||
newDataList.addAll(list.subList(0,5))
|
||||
newDataList.add(StationBeanOmit(list.size-5-1))
|
||||
newDataList.add(list.last())
|
||||
}
|
||||
if(showPassOmit){// 只展示上面的手机号
|
||||
newDataList.add(list.first())
|
||||
newDataList.add(StationBeanOmit(list.size-5-1))
|
||||
newDataList.addAll(list.slice(list.size-5 until list.size))
|
||||
} else {
|
||||
|
||||
}
|
||||
}else{
|
||||
newDataList.addAll(it.toList())
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newDataList.forEachIndexed { index, busStationBean ->
|
||||
if (busStationBean.drivingStatus == 2) {
|
||||
currentIndex = index
|
||||
isLeaving = busStationBean.isLeaving
|
||||
if(isLeaving){
|
||||
currentIndex+=1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
super.submitList(newDataList)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: StationViewHolder, position: Int) {
|
||||
getItem(position)?.let {
|
||||
holder.bind(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StationViewHolder {
|
||||
val inflater = LayoutInflater.from(parent.context)
|
||||
return when (viewType) {
|
||||
StationViewHolder.NormalStationStart -> NormalStationStartViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_normal_start_view, parent, false)
|
||||
)
|
||||
StationViewHolder.NormalStationEnd -> NormalStationEndViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_normal_end_view, parent, false)
|
||||
)
|
||||
StationViewHolder.NormalStationFuture -> NormalStationFutureViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_normal_future_view, parent, false)
|
||||
)
|
||||
StationViewHolder.NormalStationPass -> NormalStationPassViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_normal_pass_view, parent, false)
|
||||
)
|
||||
|
||||
StationViewHolder.CurrentStationStart -> CurrentStationStartViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_current_start_view, parent, false)
|
||||
)
|
||||
StationViewHolder.CurrentStationEnd -> CurrentStationEndViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_current_end_view, parent, false)
|
||||
)
|
||||
StationViewHolder.CurrentStation -> CurrentStationViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_current_view, parent, false)
|
||||
)
|
||||
|
||||
StationViewHolder.OmitStationPass -> OmitPassViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_omit_view_pass, parent,false)
|
||||
)
|
||||
StationViewHolder.OmitStationFuture -> OmitFutureViewHolder(
|
||||
inflater.inflate(R.layout.m2_station_omit_view_future, parent,false)
|
||||
)
|
||||
|
||||
else -> throw IllegalArgumentException("Invalid view type")
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
if (getItem(position) is StationBeanOmit) {
|
||||
return if (position < currentIndex) {
|
||||
StationViewHolder.OmitStationPass
|
||||
} else {
|
||||
StationViewHolder.OmitStationFuture
|
||||
}
|
||||
}
|
||||
when (position) {
|
||||
0 -> {
|
||||
return if (currentIndex == position) {
|
||||
StationViewHolder.CurrentStationStart
|
||||
} else {
|
||||
StationViewHolder.NormalStationStart
|
||||
}
|
||||
}
|
||||
|
||||
itemCount - 1 -> {
|
||||
return if (currentIndex == position) {
|
||||
StationViewHolder.CurrentStationEnd
|
||||
} else {
|
||||
StationViewHolder.NormalStationEnd
|
||||
}
|
||||
}
|
||||
|
||||
else -> {
|
||||
return if (currentIndex == position) {
|
||||
StationViewHolder.CurrentStation
|
||||
} else if (currentIndex < position) {
|
||||
StationViewHolder.NormalStationFuture
|
||||
} else {
|
||||
StationViewHolder.NormalStationPass
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewRecycled(holder: StationViewHolder) {
|
||||
super.onViewRecycled(holder)
|
||||
holder.viewRecycled(holder)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo.item
|
||||
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
|
||||
class MessageDiffCallback: DiffUtil.ItemCallback<BusStationBean>() {
|
||||
|
||||
override fun areContentsTheSame(oldItem: BusStationBean, newItem: BusStationBean): Boolean {
|
||||
return oldItem == newItem
|
||||
}
|
||||
|
||||
override fun areItemsTheSame(oldItem: BusStationBean, newItem: BusStationBean): Boolean {
|
||||
return oldItem.siteId == newItem.siteId
|
||||
}
|
||||
}
|
||||
|
||||
data class StationBeanOmit(var coutOmit:Int):BusStationBean()
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo.item
|
||||
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.wigets.OCHGradientTextView
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
abstract class StationViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
abstract fun bind(item: BusStationBean)
|
||||
open fun viewRecycled(holder: StationViewHolder){}
|
||||
private val sampleDateFormat = SimpleDateFormat("HH:mm", Locale.CHINA)
|
||||
protected val TAG = javaClass.simpleName
|
||||
|
||||
companion object{
|
||||
val CurrentStationStart = 0
|
||||
val CurrentStationEnd = 1
|
||||
val CurrentStation = 2
|
||||
|
||||
val NormalStationStart = 3
|
||||
var NormalStationEnd = 4
|
||||
val NormalStationPass = 5
|
||||
val NormalStationFuture = 6
|
||||
|
||||
val OmitStationPass = 7
|
||||
val OmitStationFuture = 8
|
||||
}
|
||||
}
|
||||
|
||||
class NormalStationStartViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var startStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_start)
|
||||
override fun bind(item: BusStationBean) {
|
||||
startStaionName.text = item.name
|
||||
}
|
||||
}
|
||||
class NormalStationEndViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var endStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_end)
|
||||
override fun bind(item: BusStationBean) {
|
||||
endStaionName.text = item.name
|
||||
}
|
||||
}
|
||||
class NormalStationPassViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var passStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_pass)
|
||||
override fun bind(item: BusStationBean) {
|
||||
passStaionName.text = item.name
|
||||
}
|
||||
}
|
||||
class NormalStationFutureViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var futureStaionName: AppCompatTextView = binding.findViewById(R.id.actv_normal_station_future)
|
||||
override fun bind(item: BusStationBean) {
|
||||
futureStaionName.text = item.name
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class CurrentStationViewHolder(val binding: View) : StationViewHolder(binding) {
|
||||
private var currentStaionName: OCHGradientTextView = binding.findViewById(R.id.och_current_station_name)
|
||||
override fun bind(item: BusStationBean) {
|
||||
currentStaionName.text = item.name
|
||||
currentStaionName.setVertrial(true)
|
||||
val intArrayOf = intArrayOf(
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe),
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb),
|
||||
)
|
||||
currentStaionName.setmColorList(intArrayOf)
|
||||
}
|
||||
}
|
||||
class CurrentStationStartViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var currentStaionStartName: OCHGradientTextView = binding.findViewById(R.id.och_current_station_start_name)
|
||||
override fun bind(item: BusStationBean) {
|
||||
currentStaionStartName.text = item.name
|
||||
val intArrayOf = intArrayOf(
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe),
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb),
|
||||
)
|
||||
currentStaionStartName.setmColorList(intArrayOf)
|
||||
}
|
||||
}
|
||||
class CurrentStationEndViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var currentStaionEndName: OCHGradientTextView = binding.findViewById(R.id.och_current_station_end_name)
|
||||
override fun bind(item: BusStationBean) {
|
||||
currentStaionEndName.text = item.name
|
||||
val intArrayOf = intArrayOf(
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe),
|
||||
ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb),
|
||||
)
|
||||
currentStaionEndName.setmColorList(intArrayOf)
|
||||
}
|
||||
}
|
||||
|
||||
class OmitPassViewHolder(val binding: View) : StationViewHolder(binding) {
|
||||
private var omitCout: AppCompatTextView = binding.findViewById(R.id.actv_pass_omit_cout)
|
||||
override fun bind(item: BusStationBean) {
|
||||
if(item is StationBeanOmit){
|
||||
omitCout.text = "${item.coutOmit}站"
|
||||
}
|
||||
}
|
||||
}
|
||||
class OmitFutureViewHolder(binding: View) : StationViewHolder(binding) {
|
||||
private var omitCout: AppCompatTextView = binding.findViewById(R.id.actv_future_omit_count)
|
||||
override fun bind(item: BusStationBean) {
|
||||
if(item is StationBeanOmit){
|
||||
omitCout.text = "${item.coutOmit}站"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.map
|
||||
|
||||
import android.graphics.BitmapFactory
|
||||
import android.os.Bundle
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.widget
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.statusbar
|
||||
|
||||
import android.annotation.*
|
||||
import android.content.Context
|
||||
@@ -9,18 +9,20 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisStatesListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisStatesListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
|
||||
import com.mogo.eagle.core.utilcode.kotlin.*
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.manager.bluetooth.BleManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
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
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_view_status_bar.view.iv_logon
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_view_status_bar.view.tv_power_cos
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_view_status_bar.view.tv_status_line_name
|
||||
import kotlinx.coroutines.*
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
@@ -31,7 +33,7 @@ import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
class M2StatusBarView @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null
|
||||
) : ConstraintLayout(context, attrs),
|
||||
IMoGoChassisStatesListener {
|
||||
IMoGoChassisStatesListener, ICommonCallback {
|
||||
|
||||
companion object {
|
||||
const val TAG = "M2StatusBarView"
|
||||
@@ -52,6 +54,8 @@ class M2StatusBarView @JvmOverloads constructor(
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
|
||||
CallerLogger.d(TAG,"onAttachedToWindow-------${this}")
|
||||
|
||||
post {
|
||||
val params: ViewGroup.LayoutParams = getLayoutParams()
|
||||
params.height = AutoSizeUtils.dp2px(context,100f)
|
||||
@@ -60,6 +64,7 @@ class M2StatusBarView @JvmOverloads constructor(
|
||||
|
||||
//电量
|
||||
CallerChassisStatesListenerManager.addListener(TAG,this)
|
||||
CommonModel.setRouteLineInfoCallback(TAG,this)
|
||||
|
||||
tv_power_cos?.also {
|
||||
it.text = "?"
|
||||
@@ -74,14 +79,35 @@ class M2StatusBarView @JvmOverloads constructor(
|
||||
BleManager.sendData2Wx("1889480", "00,${System.currentTimeMillis()}")
|
||||
}
|
||||
}
|
||||
tv_status_line_name.onClick {
|
||||
updateLineInfo("线路名称")
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateLineInfo(lineName: String?) {
|
||||
post {
|
||||
CallerLogger.d(TAG,"updateLineInfo2-------${lineName}----${this}")
|
||||
if(lineName==null){
|
||||
tv_status_line_name.setText(R.string.m2_line_name_detaile)
|
||||
}else{
|
||||
tv_status_line_name.text = lineName
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun showNoTaskView(isTrue: Boolean) {
|
||||
BizLoopManager.runInMainThread {
|
||||
CallerLogger.d(TAG,"updateLineInfo1-------${isTrue}----${this}")
|
||||
if(isTrue) {
|
||||
tv_status_line_name.setText(R.string.m2_line_name_detaile)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerHmiViewControlListenerManager.removeListener(TAG)
|
||||
CallerSkinModeListenerManager.removeListener(TAG)
|
||||
CallerChassisStatesListenerManager.removeListener(TAG)
|
||||
CallerDevaToolsManager.hideStatusBar()
|
||||
CommonModel.setRouteLineInfoCallback(TAG,null)
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.mogo.och.shuttle.weaknet.passenger.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import kotlinx.android.synthetic.main.shuttle_p_m2_view_blue_tooth.view.blueView
|
||||
|
||||
/**
|
||||
* 魔戒蓝牙控件
|
||||
* 放置于StatusBar右侧位置
|
||||
*/
|
||||
class M2BlueToothView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : BlueToothView(context, attrs, defStyleAttr),IMoGoDevaToolsListener {
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.shuttle_p_m2_view_blue_tooth, this, true)
|
||||
}
|
||||
|
||||
override fun mofangStatus(status: Boolean) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (status) {
|
||||
blueView.setImageResource(R.drawable.shuttle_p_m2_blue_tooth_close)
|
||||
} else {
|
||||
blueView.setImageResource(R.drawable.shuttle_p_m2_blue_tooth_open)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,17 +9,15 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils
|
||||
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils
|
||||
import com.mogo.och.bridge.ui.autopilot.AutopilotState
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
|
||||
import com.mogo.och.common.module.biz.scanner.ScannerManager
|
||||
import com.mogo.och.common.module.voice.OutOffVoice
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.TicketModel
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.widget.BusPStatusBarView
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.BusPassengerRouteFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.PM2BaseFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.widget.M2StatusBarView
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.statusbar.M2StatusBarView
|
||||
|
||||
/**
|
||||
* 网约车-Bus-乘客端
|
||||
|
||||
@@ -257,7 +257,7 @@ object CommonModel {
|
||||
}
|
||||
}
|
||||
|
||||
d(TAG, "queryDriverSiteByCoordinate = update")
|
||||
d(TAG, "queryDriverSiteByCoordinate = update ${result}")
|
||||
routesResult = result
|
||||
|
||||
if (result.sites != null) {
|
||||
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 274 B |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 271 B |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 811 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 811 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 921 B |
|
After Width: | Height: | Size: 231 KiB |
|
After Width: | Height: | Size: 341 KiB |
|
Before Width: | Height: | Size: 900 B |
|
Before Width: | Height: | Size: 838 B |
@@ -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/common_B3FFFFFF"/>
|
||||
<corners android:radius="@dimen/dp_18"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<gradient android:startColor="@color/common_B3FFFFFF" android:endColor="@color/common_color_00000000" android:angle="0"/>
|
||||
<corners android:radius="@dimen/dp_18"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/b2_1F82FB" />
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/dp_18"
|
||||
android:topRightRadius="@dimen/dp_18" />
|
||||
</shape>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/b2_1F82FB" />
|
||||
<corners
|
||||
android:bottomLeftRadius="@dimen/dp_18"
|
||||
android:bottomRightRadius="@dimen/dp_18" />
|
||||
</shape>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/b2_95B1D6" />
|
||||
<corners
|
||||
android:topLeftRadius="@dimen/dp_18"
|
||||
android:topRightRadius="@dimen/dp_18" />
|
||||
</shape>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/b2_95B1D6" />
|
||||
<corners
|
||||
android:bottomLeftRadius="@dimen/dp_18"
|
||||
android:bottomRightRadius="@dimen/dp_18" />
|
||||
</shape>
|
||||
@@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:background="@drawable/m2_top_arrive_station_bg"
|
||||
android:layout_width="1080dp"
|
||||
android:layout_height="@dimen/dp_614">
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/arrive_station_bg"
|
||||
android:background="@drawable/b2_arrive_title_bg"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_121"
|
||||
android:layout_width="@dimen/dp_996"
|
||||
android:layout_height="@dimen/dp_178"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/arrive_station_title"
|
||||
android:text="@string/m2_arrive_station_title"
|
||||
android:textColor="@color/common_203555"
|
||||
android:textSize="@dimen/dp_34"
|
||||
app:layout_constraintTop_toTopOf="@+id/arrive_station_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/arrive_station_bg"
|
||||
android:layout_marginTop="@dimen/dp_23"
|
||||
android:layout_marginStart="@dimen/dp_50"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<ImageView
|
||||
app:layout_constraintTop_toTopOf="@+id/arrive_station_title"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/arrive_station_title"
|
||||
app:layout_constraintStart_toEndOf="@+id/arrive_station_title"
|
||||
android:id="@+id/iv_animal_list"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_32"
|
||||
android:src="@drawable/shuttle_p_m2_bg_p_m2_arrived_station"
|
||||
android:layout_marginStart="@dimen/dp_7" />
|
||||
|
||||
<com.mogo.och.common.module.wigets.OCHGradientTextView
|
||||
android:id="@+id/ochtv_arrive_station_value"
|
||||
android:textSize="@dimen/dp_50"
|
||||
android:text="@string/m2_empty_line_title"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
android:layout_marginStart="@dimen/dp_50"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/arrive_station_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/arrive_station_bg"
|
||||
android:textStyle="bold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_doorway"
|
||||
android:src="@drawable/b2_arrive_door"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_32"
|
||||
android:layout_width="@dimen/dp_262"
|
||||
android:layout_height="@dimen/dp_253"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_door_left"
|
||||
android:src="@drawable/b2_arrive_door_left"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/aciv_doorway"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:layout_marginEnd="-58dp"
|
||||
android:layout_width="@dimen/dp_146"
|
||||
android:layout_height="@dimen/dp_273"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:src="@drawable/b2_arrive_door_left_arrow"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_door_left"
|
||||
app:layout_constraintEnd_toStartOf="@+id/aciv_door_left"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_door_left"
|
||||
android:layout_width="@dimen/dp_119"
|
||||
android:layout_height="@dimen/dp_76"/>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_door_right"
|
||||
android:src="@drawable/b2_arrive_door_right"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aciv_doorway"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:layout_marginStart="-40dp"
|
||||
android:layout_width="@dimen/dp_146"
|
||||
android:layout_height="@dimen/dp_273"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:src="@drawable/b2_arrive_door_right_arrow"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_door_right"
|
||||
app:layout_constraintStart_toEndOf="@+id/aciv_door_right"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_door_right"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:layout_width="@dimen/dp_119"
|
||||
android:layout_height="@dimen/dp_76"/>
|
||||
|
||||
</merge>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_right_bg"
|
||||
android:src="@drawable/m2_p_driver_info_right"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_width="@dimen/dp_217"
|
||||
android:layout_height="@dimen/dp_476"/>
|
||||
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.speed.SpeedView
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.status.StatusView
|
||||
android:id="@+id/auto_tv"
|
||||
android:background="@drawable/m2_autopilot_status_out"
|
||||
android:text="@string/m2_autopilot_status"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/common_284F7E"
|
||||
android:textSize="@dimen/dp_26"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginBottom="@dimen/dp_3"
|
||||
app:layout_constraintBottom_toTopOf="@+id/turn_light_view"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_96"/>
|
||||
|
||||
<!-- 转向灯-->
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.light.M2TurnLightView
|
||||
android:id="@+id/turn_light_view"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_96"
|
||||
android:layout_marginBottom="@dimen/dp_51"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_right_bg" />
|
||||
|
||||
|
||||
</merge>
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:background="@drawable/m2_top_empty_bg"
|
||||
android:layout_width="1080dp"
|
||||
android:layout_height="@dimen/dp_614">
|
||||
|
||||
|
||||
<com.mogo.och.common.module.wigets.OCHGradientTextView
|
||||
android:id="@+id/tv_title"
|
||||
android:textSize="@dimen/dp_50"
|
||||
android:text="@string/m2_empty_line_title"
|
||||
android:layout_marginTop="@dimen/dp_220"
|
||||
android:layout_marginStart="@dimen/dp_55"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textStyle="bold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_content"
|
||||
android:textSize="@dimen/dp_34"
|
||||
android:text="@string/m2_empty_line_content"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginStart="@dimen/dp_55"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textStyle="bold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
app:layout_constraintTop_toTopOf="@+id/tv_content"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tv_content"
|
||||
app:layout_constraintStart_toEndOf="@+id/tv_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:src="@drawable/m2_empty_go_statart"
|
||||
android:layout_width="@dimen/dp_60"
|
||||
android:layout_height="@dimen/dp_12"/>
|
||||
|
||||
</merge>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:background="@drawable/m2_top_arrive_station_bg"
|
||||
android:layout_width="1080dp"
|
||||
android:layout_height="@dimen/dp_630">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/ll_station_container"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_width="@dimen/dp_762"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.autopilot.AutopilotView
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_19"
|
||||
android:layout_marginEnd="@dimen/dp_28"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
|
||||
</merge>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_speed"
|
||||
android:textSize="@dimen/dp_100"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/common_203555"
|
||||
android:text="60"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:textSize="@dimen/dp_24"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/common_203555"
|
||||
android:text="KM/H"
|
||||
android:layout_marginTop="@dimen/dp_112"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
/>
|
||||
|
||||
</merge>
|
||||
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_current_station_bg"
|
||||
android:layout_width="@dimen/dp_760"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
android:layout_marginStart="@dimen/dp_52"
|
||||
android:src="@drawable/b2_station_current_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_start_end_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_48"
|
||||
android:src="@drawable/b2_end_point"
|
||||
android:layout_width="@dimen/dp_60"
|
||||
android:layout_height="@dimen/dp_60"/>
|
||||
|
||||
|
||||
|
||||
<com.mogo.och.common.module.wigets.OCHGradientTextView
|
||||
android:id="@+id/och_current_station_end_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:text="惠新西街北口"
|
||||
android:layout_marginBottom="@dimen/dp_8"
|
||||
android:textColor="@color/m2_516582"
|
||||
android:textSize="@dimen/dp_42"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</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"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@color/b2_1F82FB"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_current_station_bg"
|
||||
android:layout_width="@dimen/dp_760"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
android:layout_marginStart="@dimen/dp_52"
|
||||
android:src="@drawable/b2_station_current_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_start_end_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_48"
|
||||
android:src="@drawable/b2_start_point"
|
||||
android:layout_width="@dimen/dp_60"
|
||||
android:layout_height="@dimen/dp_60"/>
|
||||
|
||||
<com.mogo.och.common.module.wigets.OCHGradientTextView
|
||||
|
||||
android:id="@+id/och_current_station_start_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:layout_marginBottom="@dimen/dp_8"
|
||||
android:text="惠新西街北口"
|
||||
android:textColor="@color/m2_516582"
|
||||
android:textSize="@dimen/dp_42"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_station_current_point"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_station_current_point"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_current_station_bg"
|
||||
android:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_station_current_point"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_station_current_point"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_current_station_bg"
|
||||
android:background="@color/b2_1F82FB"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_current_station_bg"
|
||||
android:layout_width="@dimen/dp_760"
|
||||
android:layout_height="@dimen/dp_68"
|
||||
android:layout_marginStart="@dimen/dp_52"
|
||||
android:src="@drawable/b2_station_current_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_station_current_point"
|
||||
android:layout_width="@dimen/dp_22"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:src="@drawable/b2_current_stattion_point"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_current_station_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_current_station_bg"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_current_station_bg" />
|
||||
|
||||
|
||||
<com.mogo.och.common.module.wigets.OCHGradientTextView
|
||||
android:id="@+id/och_current_station_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:text="惠新西街北口"
|
||||
android:textColor="@color/m2_516582"
|
||||
android:layout_marginBottom="@dimen/dp_8"
|
||||
android:textSize="@dimen/dp_42"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@color/b2_1F82FB"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_start_end_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_48"
|
||||
android:src="@drawable/b2_end_point"
|
||||
android:layout_width="@dimen/dp_60"
|
||||
android:layout_height="@dimen/dp_60"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_normal_station_end"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:text="惠新西街北口"
|
||||
android:textSize="@dimen/dp_34"
|
||||
android:textColor="@color/common_203555"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@color/b2_1F82FB"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@color/b2_1F82FB"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_middle_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_62"
|
||||
android:src="@drawable/b2_station_future_point"
|
||||
android:layout_width="@dimen/dp_30"
|
||||
android:layout_height="@dimen/dp_30"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_normal_station_future"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:text="惠新西街北口"
|
||||
android:textSize="@dimen/dp_34"
|
||||
android:textColor="@color/common_203555"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_middle_station"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_middle_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_62"
|
||||
android:src="@drawable/b2_station_pass_point"
|
||||
android:layout_width="@dimen/dp_30"
|
||||
android:layout_height="@dimen/dp_30"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_normal_station_pass"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:text="惠新西街北口"
|
||||
android:textSize="@dimen/dp_34"
|
||||
android:textColor="@color/m2_516582"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68">
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_end_station"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@color/b2_95B1D6"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_34"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_start_end_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_48"
|
||||
android:src="@drawable/b2_start_point"
|
||||
android:layout_width="@dimen/dp_60"
|
||||
android:layout_height="@dimen/dp_60"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_normal_station_start"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_118"
|
||||
android:text="惠新西街北口"
|
||||
android:textSize="@dimen/dp_34"
|
||||
android:textColor="@color/m2_516582"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68">
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@drawable/b2_station_line_rounded_future_top"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_15"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_station"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/b2_station_line_rounded_future_bottom"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_15"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_start_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_74"
|
||||
android:src="@drawable/b2_end_omit"
|
||||
android:layout_width="@dimen/dp_7"
|
||||
android:layout_height="@dimen/dp_28"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_omit_count_bg_future"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aciv_start_station"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:src="@drawable/b2_station_omit_count_bg"
|
||||
android:layout_width="@dimen/dp_78"
|
||||
android:layout_height="@dimen/dp_40"/>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_future_omit_count"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_omit_count_bg_future"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_omit_count_bg_future"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_omit_count_bg_future"
|
||||
android:layout_marginEnd="@dimen/dp_11"
|
||||
android:text="3站"
|
||||
android:textSize="@dimen/dp_24"
|
||||
android:textColor="@color/common_203555"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
android:layout_width="@dimen/dp_764"
|
||||
android:layout_height="@dimen/dp_68">
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_top_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@drawable/b2_station_line_rounded_pass_top"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_15"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/bg_bottom_line"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_start_station"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_start_station"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/b2_station_line_rounded_pass_bottom"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_15"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_start_station"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_74"
|
||||
android:src="@drawable/b2_start_omit"
|
||||
android:layout_width="@dimen/dp_7"
|
||||
android:layout_height="@dimen/dp_28"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_omit_count_bg"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/aciv_start_station"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:src="@drawable/b2_station_omit_count_bg"
|
||||
android:layout_width="@dimen/dp_78"
|
||||
android:layout_height="@dimen/dp_40"/>
|
||||
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_pass_omit_cout"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_omit_count_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_omit_count_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_omit_count_bg"
|
||||
android:layout_marginEnd="@dimen/dp_11"
|
||||
android:text="3站"
|
||||
android:textSize="@dimen/dp_24"
|
||||
android:textColor="@color/m2_516582"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -3,73 +3,42 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:background="@drawable/m2_top_bg"
|
||||
android:paddingTop="@dimen/dp_100"
|
||||
android:layout_width="match_parent"
|
||||
tools:layout_height="@dimen/dp_630"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_right_bg"
|
||||
android:src="@drawable/m2_p_driver_info_right"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.lineinfo.LineView
|
||||
android:id="@+id/lineView"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_19"
|
||||
android:layout_marginEnd="@dimen/dp_28"
|
||||
android:layout_width="@dimen/dp_217"
|
||||
android:layout_height="@dimen/dp_476"/>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_100"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_530"/>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/speed_tv"
|
||||
android:textSize="@dimen/dp_100"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/common_203555"
|
||||
android:text="60"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
/>
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.empty.EmptyView
|
||||
android:id="@+id/emptyView"
|
||||
android:background="@drawable/m2_top_empty_bg"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_614"/>
|
||||
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.line.arrive.ArrivedView
|
||||
android:id="@+id/arriveView"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:visibility="gone"
|
||||
android:background="@drawable/m2_top_arrive_station_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_614"/>
|
||||
|
||||
<TextView
|
||||
android:textSize="@dimen/dp_24"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/common_203555"
|
||||
android:text="KM/H"
|
||||
android:layout_marginTop="@dimen/dp_132"
|
||||
app:layout_constraintTop_toTopOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/auto_tv"
|
||||
android:background="@drawable/m2_autopilot_status_out"
|
||||
android:text="@string/m2_autopilot_status"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/common_284F7E"
|
||||
android:textSize="@dimen/dp_26"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginBottom="@dimen/dp_3"
|
||||
app:layout_constraintBottom_toTopOf="@+id/turn_light_view"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_96"/>
|
||||
|
||||
<!-- 转向灯-->
|
||||
<com.mogo.och.shuttle.weaknet.passenger.ui.widget.M2TurnLightView
|
||||
android:id="@+id/turn_light_view"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_96"
|
||||
android:layout_marginBottom="@dimen/dp_51"
|
||||
app:layout_constraintStart_toStartOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/aciv_right_bg"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_right_bg" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_26">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/blueView"
|
||||
android:layout_width="@dimen/dp_18"
|
||||
android:layout_height="@dimen/dp_26"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/shuttle_p_m2_blue_tooth_open"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -20,7 +20,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_line_name"
|
||||
android:id="@+id/tv_status_line_name"
|
||||
app:layout_constraintTop_toTopOf="@+id/iv_logon"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/iv_logon"
|
||||
app:layout_constraintStart_toEndOf="@+id/iv_logon"
|
||||
|
||||
@@ -24,4 +24,7 @@
|
||||
|
||||
<color name="shuttle_p_m2_color_99afc9e7">#99AFC9E7</color>
|
||||
<color name="shuttle_p_m2_color_6617417B">#6617417B</color>
|
||||
<color name="m2_516582">#516582</color>
|
||||
<color name="b2_95B1D6">#95B1D6</color>
|
||||
<color name="b2_1F82FB">#1F82FB</color>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
|
||||
<string name="m2_line_name_detaile">MOGO BUS</string>
|
||||
<string name="m2_autopilot_status">AUTO</string>
|
||||
<string name="m2_empty_line_title">MOGO自动驾驶小巴</string>
|
||||
<string name="m2_empty_line_content">即将启程</string>
|
||||
<string name="m2_arrive_station_title">当前到站</string>
|
||||
</resources>
|
||||