[taxi-p]
[check phone startAutopilot]
This commit is contained in:
yangyakun
2023-12-24 00:32:07 +08:00
parent 9b0d68aeae
commit 55cf3845e5
82 changed files with 1568 additions and 101 deletions

View File

@@ -36,14 +36,14 @@ object AutopilotManager : IMoGoAutopilotStatusListener {
}
fun startAutopilot() {
fun startAutopilot():String {
if (!checkCurrentOCHOrder()) {
CallerLogger.e(
SceneConstant.M_TAXI_P + TAG,
"no order or order is empty."
)
ToastUtils.showShort("当前订单不存在或异常!")
return
return "当前订单不存在或异常!"
}
if (TaxiPassengerModel.currentOCHOrder!!.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code) {
startServicePilotDone()
@@ -51,12 +51,12 @@ object AutopilotManager : IMoGoAutopilotStatusListener {
if(CallerAutoPilotStatusListenerManager.getState()
== IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
ToastUtils.showShort("自驾中、请勿重复启动");
return;
return "自驾中、请勿重复启动";
}
val resion = TrajectoryAndDistanceManager.canStartAutopilot(TaxiPassengerModel.currentOCHOrder!!.lineId)
if (!StringUtils.isEmpty(resion)) {
ToastUtils.showShort(resion)
return
return resion
}
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) {
@@ -70,7 +70,7 @@ object AutopilotManager : IMoGoAutopilotStatusListener {
TaxiPassengerModel.currentOCHOrder!!.orderNo,
OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason
)
return
return OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ", 请稍候重试"
}
val parameters = initAutopilotControlParameters()
if (parameters == null) {
@@ -78,7 +78,7 @@ object AutopilotManager : IMoGoAutopilotStatusListener {
SceneConstant.M_TAXI_P + TAG,
"AutopilotControlParameters is empty."
)
return
return "自动化驾驶参数异常"
}
CallerAutoPilotControlManager.startAutoPilot(parameters)
CallerLogger.d(
@@ -91,6 +91,7 @@ object AutopilotManager : IMoGoAutopilotStatusListener {
TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(false, false, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr,
TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, TaxiPassengerModel.currentOCHOrder!!.orderNo,
TaxiPassengerModel.currentOCHOrder!!.lineId)
return ""
}
private fun initAutopilotControlParameters(): AutopilotControlParameters? {

View File

@@ -253,7 +253,6 @@ object TaxiPassengerModel {
fun checkPhoneAndUpdateStatus(
phoneTail: String?,
commonCallback: ITaxiPassengerCommonCallback?
) {
if (currentOCHOrder == null) return
TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus(
@@ -266,7 +265,6 @@ object TaxiPassengerModel {
orderStatusChange()
VoiceNotice.showNotice("验证成功!关闭车门并佩戴安全带后开启行程吧!", AIAssist.LEVEL2)
}
commonCallback?.onCommonCallback()
}
override fun onFail(code: Int, msg: String) {

View File

@@ -68,44 +68,40 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
// 20 司机到达上车点
mView?.showOrHideArrivedEndLayout(isShow = false)
mView?.showOrHidePressengerCheckPager(true, order.startSiteAddr,
order.endSiteAddr, order.passengerNum, order.carNumber, order.passengerPhone)
mView?.showOrHideStartAutopilotView(isShow = false)
mView?.showOrHideCheckAndStartAutopilotView(0)
overMapViewClear()
}
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
// 30 乘客到达上车点
mView?.showOrHideArrivedEndLayout(isShow = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
mView?.showOrHideStartAutopilotView(isShow = true)
mView?.showOrHideCheckAndStartAutopilotView(1)
overMapViewClear()
}
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
// 服务中(去往目的地)
mView?.showOrHideArrivedEndLayout(isShow = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
mView?.showOrHideStartAutopilotView(isShow = false)
mView?.showOrHideCheckAndStartAutopilotView(2)
mView?.tipXiaoZhi()
overMapViewShow()
}
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
// 50 到达终点 乘客可以评价
mView?.showOrHideArrivedEndLayout(true)
mView?.showOrHidePressengerCheckPager(isShow = false)
mView?.showOrHideStartAutopilotView(isShow = false)
mView?.showOrHideCheckAndStartAutopilotView(2)
overMapViewClear()
}
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
// 60 行程完成
mView?.showOrHideStartAutopilotView(isShow = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
mView?.showOrHideCheckAndStartAutopilotView(2)
mView?.showOrHideArrivedEndLayout(false)
overMapViewClear()
}
TaxiPassengerOrderStatusEnum.Cancel -> {
// 70 取消订单
mView?.showOrHideStartAutopilotView(isShow = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
mView?.showOrHideCheckAndStartAutopilotView(2)
mView?.showOrHideArrivedEndLayout(isShow = false)
overMapViewClear()
}
@@ -122,12 +118,6 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
mView?.showOrHideOverMapView()
}
fun checkAndUpdateStatus(phone: String?) {
TaxiPassengerModel.checkPhoneAndUpdateStatus(phone) {
mView?.showOrHidePressengerCheckPager(isShow = false)
}
}
/**
* 开启自动驾驶
*/

View File

@@ -27,8 +27,10 @@ import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter
import com.mogo.och.taxi.passenger.ui.arrived.ArrivedView
import com.mogo.och.taxi.passenger.ui.bottom.BottomBar
import com.mogo.och.taxi.passenger.ui.check.TaxiPassengerCheckView
import com.mogo.och.taxi.passenger.ui.checkstartautopilot.ChekAndStartAutopilotView
import com.mogo.och.taxi.passenger.ui.startautopilot.StartAutopilotView
import com.mogo.och.taxi.passenger.ui.statusview.StatusBarView
import io.reactivex.disposables.Disposable
import kotlinx.android.synthetic.main.taxi_p_base_fragment.*
import java.lang.ref.WeakReference
@@ -44,18 +46,9 @@ class TaxiPassengerBaseFragment() :
MvpFragment<TaxiPassengerBaseFragment?, BaseTaxiPassengerPresenter?>(), IMogoMapListener,
TaxiPassengerTaxiView {
/**
* 手机号后四位验证
*/
private var mArrivedCheckView: WeakReference<TaxiPassengerCheckView?>? = null
/**
* 启动自驾页面
*/
private var mStartAutopilotView: WeakReference<StartAutopilotView?>? = null
private var statusBarView: StatusBarView? = null
private var tipXiaoZhiDelay: Disposable?=null
override fun getLayoutId(): Int {
return R.layout.taxi_p_base_fragment
@@ -161,14 +154,22 @@ class TaxiPassengerBaseFragment() :
}
}
}
private fun initCheckView() {
mArrivedCheckView = WeakReference(TaxiPassengerCheckView(context))
mArrivedCheckView!!.get()!!.iTaxiPassengerCommonValueCallback =
ITaxiPassengerCommonValueCallback { phoneTail: String? ->
getPresenter()!!.checkAndUpdateStatus(phoneTail)
arrivedView.arrivedVisilityChangeListenr = object :ArrivedView.ArrivedVisilityChangeListenr{
override fun isShow(show: Boolean) {
CallerLogger.d(M_TAXI_P + TAG, "arrived ${show}")
if(arrivedView.visibility==View.GONE&&chekAndStartAutopilotView.visibility==View.GONE){
showOrHide(true)
}
}
}
chekAndStartAutopilotView.checkAndStartVisilityChangeListenr = object : ChekAndStartAutopilotView.CheckAndStartVisilityChangeListenr{
override fun isShow(show: Boolean) {
CallerLogger.d(M_TAXI_P + TAG, "check and startAutopilot ${show}")
if(arrivedView.visibility==View.GONE&&chekAndStartAutopilotView.visibility==View.GONE){
showOrHide(true)
}
}
}
}
override fun onResume() {
@@ -231,30 +232,39 @@ class TaxiPassengerBaseFragment() :
}
}
/**
* 显示或者隐藏乘客可点击自动驾驶页面
* 乘客验证成功,页面显示,按钮置于不可点击
* 司机端确认可点击开启自动驾驶, 按钮置为可点击
* 订单前往目的地,页面消失
*
* @param isShow
*/
fun showOrHideStartAutopilotView(isShow: Boolean) {
if (isShow) {
exitFullVideoScreen(false)
if (mStartAutopilotView == null || mStartAutopilotView!!.get() == null) {
mStartAutopilotView = WeakReference(StartAutopilotView(requireContext()))
fun showOrHideCheckAndStartAutopilotView(status:Int){
arrivedView.visibility = View.GONE
when (status) {
0 -> {
if(chekAndStartAutopilotView.visibility == View.GONE){
showOrHide(false)
}
chekAndStartAutopilotView.aniCheckAndStartAutopilot(true,0)
}
mStartAutopilotView?.get()?.let {
OverlayViewUtils.showOverlayView(activity, it)
it.handleStartAutopilotBtnStatus(false)
1 -> {
if(chekAndStartAutopilotView.visibility == View.GONE){
showOrHide(false)
}
chekAndStartAutopilotView.aniCheckAndStartAutopilot(true,1)
}
} else {
mStartAutopilotView?.get()?.closeAllAnimsAndView()
RxUtils.createSubscribe(30_000) {
VoiceNotice.showNotice("想和我对话的时候可以直接戳我,也可以对我说\\'你好小智\\'", AIAssist.LEVEL2)
2 -> {
chekAndStartAutopilotView.aniCheckAndStartAutopilot(false,2)
showOrHide(true)
chekAndStartAutopilotView.resetCheckView()
}
mStartAutopilotView = null
else -> {}
}
}
fun tipXiaoZhi(){
RxUtils.disposeSubscribe(tipXiaoZhiDelay)
tipXiaoZhiDelay = RxUtils.createSubscribe(30_000) {
VoiceNotice.showNotice(
"想和我对话的时候可以直接戳我,也可以对我说\\'你好小智\\'",
AIAssist.LEVEL2
)
}
}
@@ -292,39 +302,6 @@ class TaxiPassengerBaseFragment() :
overMapView?.clearCustomPolyline()
}
/**
* ① 取消订单 到达上车点后乘客取消订单 隐藏乘客验证页面
* ② 司机到达上车点 到达上车点 展示乘客验证页面
* ③ 乘客到达上车点 手机号验证成功后 隐藏乘客验证页面
* ④ debug 使用
*/
fun showOrHidePressengerCheckPager(
isShow: Boolean,
startSiteAddr: String? = "",
endSiteAddr: String? = "",
passengerNum: String? = "",
carNumber: String? = "",
phone: String? = ""
) {
try {
if (isShow) {
exitFullVideoScreen(false)
if (mArrivedCheckView == null || mArrivedCheckView!!.get() == null) {
initCheckView()
}
mArrivedCheckView!!.get()!!
.setData(startSiteAddr, endSiteAddr, passengerNum, carNumber, phone)
OverlayViewUtils.showOverlayView(activity, mArrivedCheckView!!.get())
} else {
if (mArrivedCheckView == null || mArrivedCheckView!!.get() == null) {
return
}
OverlayViewUtils.dismissOverlayView(mArrivedCheckView!!.get())
}
} catch (e: Exception) {
e.printStackTrace()
}
}
fun showOverMapView() {
bottom.setCheckIndex(BottomBar.SelectView.OVERMAPVIEW)

View File

@@ -0,0 +1,163 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot
import android.animation.ObjectAnimator
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.utils.BigFrameAnimatorContainer
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
import kotlinx.android.synthetic.main.taxt_p_check_startautopilot.view.aciv_check_autopilot
import kotlinx.android.synthetic.main.taxt_p_check_startautopilot.view.checkPhoneNumber
import kotlinx.android.synthetic.main.taxt_p_check_startautopilot.view.startAutopilotClose
import kotlinx.android.synthetic.main.taxt_p_check_startautopilot.view.startAutopilotView
/**
* V2X预警事件view通过FloatWindow呈现无需加入到自定义layout中
*
* Created on 2022/3/16
*/
class ChekAndStartAutopilotView : WindowRelativeLayout,
ChekAndStartAutopilotViewModel.CheckCallback {
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 var viewModel: ChekAndStartAutopilotViewModel? = null
private var aniCheck2StartAutopilotView: BigFrameAnimatorContainer? = null
var checkAndStartVisilityChangeListenr: CheckAndStartVisilityChangeListenr?=null
private fun initView(context: Context) {
d(SceneConstant.M_TAXI_P + TAG, "initView")
LayoutInflater.from(context).inflate(R.layout.taxt_p_check_startautopilot, this, true)
startAutopilotClose.onClick {
visibility = View.GONE
}
}
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if (isVisible) {
aniCheck2StartAutopilotView =
BigFrameAnimatorContainer(R.array.check2startautopilt, 39, aciv_check_autopilot, true)
aniCheck2StartAutopilotView?.mOnAnimationStoppedListener = object : BigFrameAnimatorContainer.OnAnimationStoppedListener{
override fun AnimationStopped() {
startAutopilotView.showStartAutopilot()
}
}
} else {
aniCheck2StartAutopilotView = null
}
checkAndStartVisilityChangeListenr?.isShow(isVisible)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(ChekAndStartAutopilotViewModel::class.java)
}
viewModel?.setStartAutopilotCallback(this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
}
companion object {
const val TAG = "TaxiPassengerCheckView"
}
init {
try {
initView(context)
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun dismissWindow() {
visibility = View.GONE
}
fun resetCheckView() {
checkPhoneNumber.visibility = View.VISIBLE
startAutopilotView.visibility = View.GONE
startAutopilotClose.visibility = View.GONE
}
fun startAnimation2StartAutopilit() {
checkPhoneNumber.visibility = View.GONE
startAutopilotView.visibility = View.VISIBLE
startAutopilotClose.visibility = View.VISIBLE
aniCheck2StartAutopilotView?.start()
}
fun aniCheckAndStartAutopilot(show:Boolean,status:Int){
val alphaStart: Float
val alphaEnd: Float
if(show){
alphaStart = 0.0f
alphaEnd = 1f
visibility = View.VISIBLE
}else{
alphaStart = 1f
alphaEnd = 0.0f
visibility = View.GONE
}
when (status) {
0 -> {
checkPhoneNumber.visibility = View.VISIBLE
startAutopilotView.visibility = View.GONE
startAutopilotClose.visibility = View.GONE
ObjectAnimator.ofFloat(this@ChekAndStartAutopilotView, "alpha", alphaStart, alphaEnd).apply {
duration = 3000
}.start()
}
1 -> {
checkPhoneNumber.visibility = View.GONE
startAutopilotView.visibility = View.VISIBLE
startAutopilotClose.visibility = View.VISIBLE
aniCheck2StartAutopilotView?.start()
}
2 -> {
checkPhoneNumber.visibility = View.VISIBLE
startAutopilotView.visibility = View.GONE
startAutopilotClose.visibility = View.GONE
return
}
else -> {}
}
}
interface CheckAndStartVisilityChangeListenr{
fun isShow(show: Boolean)
}
}

View File

@@ -0,0 +1,50 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot
import androidx.lifecycle.ViewModel
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel
class ChekAndStartAutopilotViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallback {
private val TAG = ChekAndStartAutopilotViewModel::class.java.simpleName
private var viewCallback: CheckCallback? = null
init {
TaxiPassengerModel.setOrderStatusCallback(TAG,this)
}
fun setStartAutopilotCallback(viewCallback: CheckCallback) {
this.viewCallback = viewCallback
}
override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?) {
super.onCurrentOrderStatusChanged(order)
when (order?.orderStatus) {
TaxiPassengerOrderStatusEnum.ArriveAtStart.code -> {
// 显示手机号验证
}
TaxiPassengerOrderStatusEnum.UserArriveAtStart.code -> {
// 显示启动自驾
}
else -> {
viewCallback?.dismissWindow()
}
}
}
override fun onCleared() {
super.onCleared()
this.viewCallback = null
TaxiPassengerModel.setOrderStatusCallback(TAG, null)
}
interface CheckCallback {
fun dismissWindow()
}
}

View File

@@ -0,0 +1,101 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.check
import android.content.Context
import android.graphics.Typeface
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.TextAppearanceSpan
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.widget.NumberCheckView
import io.reactivex.disposables.Disposable
import kotlinx.android.synthetic.main.taxt_p_check.view.numberCheckView
import kotlinx.android.synthetic.main.taxt_p_check.view.tv_passenger_count
import kotlinx.android.synthetic.main.taxt_p_check.view.tv_passenger_end
import kotlinx.android.synthetic.main.taxt_p_check.view.tv_passenger_start
class CheckView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : ConstraintLayout(
context, attrs, defStyleAttr
), ChekViewModel.CheckCallback, NumberCheckView.SubmitListener {
private var submitThrottle: Disposable? = null
private var viewModel: ChekViewModel? = null
companion object {
const val TAG = "CheckView"
}
private fun initView(context: Context) {
d(SceneConstant.M_TAXI_P + TAG, "initView")
LayoutInflater.from(context).inflate(R.layout.taxt_p_check, this, true)
numberCheckView.submitListener = this
}
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if (isVisible) {
viewModel?.setOrderInfo()
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(ChekViewModel::class.java)
}
viewModel?.setStartAutopilotCallback(this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
}
init {
try {
initView(context)
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun setOrderInfo(
startSiteAddr: String?,
endSiteAddr: String?,
passengerNum: String?,
phone: String?
) {
val sb = SpannableStringBuilder("乘客数:$passengerNum") // 包装字体内容
sb.setSpan(
TextAppearanceSpan(
"default",
Typeface.NORMAL, 100,
ContextCompat.getColorStateList(context, R.color.taxi_p_378EFB), null
),
4, 5, Spannable.SPAN_INCLUSIVE_INCLUSIVE
)
tv_passenger_count.text = sb
tv_passenger_start.text = "起 点 : $startSiteAddr"
tv_passenger_end.text = "终 点 : $endSiteAddr"
numberCheckView.resetNum(phone ?: "")
}
override fun trySubmit(number: String) {
RxUtils.disposeSubscribe(submitThrottle)
submitThrottle = RxUtils.createSubscribe(1_000) {
viewModel?.checkAndUpdateStatus(number)
}
}
}

View File

@@ -0,0 +1,45 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.check
import androidx.lifecycle.ViewModel
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel
class ChekViewModel : ViewModel() {
private val TAG = ChekViewModel::class.java.simpleName
private var viewCallback: CheckCallback? = null
init {
}
fun setStartAutopilotCallback(viewCallback: CheckCallback) {
this.viewCallback = viewCallback
}
fun checkAndUpdateStatus(phone: String) {
TaxiPassengerModel.checkPhoneAndUpdateStatus(phone)
}
fun setOrderInfo() {
val currentOCHOrder = TaxiPassengerModel.currentOCHOrder
currentOCHOrder?.let { order ->
viewCallback?.setOrderInfo(order.startSiteAddr,
order.endSiteAddr, order.carNumber, order.passengerPhone)
}
}
override fun onCleared() {
super.onCleared()
this.viewCallback = null
}
interface CheckCallback {
fun setOrderInfo(startSiteAddr: String?,
endSiteAddr: String?,
passengerNum: String?,
phone: String?)
}
}

View File

@@ -0,0 +1,231 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.startautopilot
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.core.content.ContextCompat
import androidx.lifecycle.ViewModelProvider
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition
import com.mogo.och.common.module.manager.devicemanage.data.DoorState
import com.mogo.och.common.module.utils.FrameAnimatorContainer
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.actv_front_left_door
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.actv_front_right_door
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.actv_orderinfo
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.actv_rear_left_door
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.actv_rear_right_door
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.taxi_p_autopilot_btn_bg
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.taxi_p_autopilot_starting
import kotlinx.android.synthetic.main.taxt_p_start_autopilot_view.view.taxi_p_start_autopilot
/**
* @author: yangyakun
* 页面状态:
* ①:不能启动自驾
* ②:可以启动自驾
* ③:启动自驾中
* ④:启动自驾超时
* ⑤:启动自驾失败
*/
class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAutopilotCallback {
constructor(context: Context) : super(context)
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
context, attributeSet, defStyleAttr
)
companion object {
private val TAG = StartAutopilotView::class.java.simpleName
}
private var taxiPStartAutopilot: FrameAnimatorContainer? = null
private var taxiPStartAutopilotCar: FrameAnimatorContainer? = null
init {
initView()
}
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.taxt_p_start_autopilot_view, this, true)
taxiPStartAutopilotCar = FrameAnimatorContainer(
R.array.taxi_p_start_autopilot_car, 20, taxi_p_autopilot_starting
)
taxiPStartAutopilotCar?.setOnAnimStopListener(object :
FrameAnimatorContainer.OnAnimationStoppedListener {
override fun AnimationStopped() {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "光圈动画暂停")
}
})
taxiPStartAutopilot = FrameAnimatorContainer(
R.array.taxi_p_start_autopilot, 15, taxi_p_autopilot_btn_bg, true, initFirstFrame = false
)
taxiPStartAutopilot?.setOnAnimStopListener(object :
FrameAnimatorContainer.OnAnimationStoppedListener {
override fun AnimationStopped() {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "可以启动自驾动画暂停")
}
})
}
override fun setOrderInfo(show: String) {
actv_orderinfo.text = show
}
override fun setDoorStatus(doorPosition: DoorPosition, state: DoorState) {
when (doorPosition) {
DoorPosition.FRONT_LEFT -> {
if (state == DoorState.OPEN) {
actv_front_left_door.visibility = VISIBLE
} else {
actv_front_left_door.visibility = GONE
}
}
DoorPosition.FRONT_RIGHT -> {
if (state == DoorState.OPEN) {
actv_front_right_door.visibility = VISIBLE
} else {
actv_front_right_door.visibility = GONE
}
}
DoorPosition.REAR_LEFT -> {
if (state == DoorState.OPEN) {
actv_rear_left_door.visibility = VISIBLE
} else {
actv_rear_left_door.visibility = GONE
}
}
DoorPosition.REAR_RIGHT -> {
if (state == DoorState.OPEN) {
actv_rear_right_door.visibility = VISIBLE
} else {
actv_rear_right_door.visibility = GONE
}
}
else -> {
}
}
}
override fun canStartAutopilot(can: Boolean) {
if (can) {
ableStartAutopilot()
} else {
unableStartAutopilot()
}
}
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if(isVisible){
taxi_p_start_autopilot.background = null
taxi_p_start_autopilot.text = resources.getString(R.string.taxi_p_start_autopilot_txt)
}else{
unableStartAutopilot()
goneAllDoorState()
resetView()
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDetachedFromWindow")
}
}
private fun resetView() {
taxi_p_autopilot_starting.visibility = View.GONE
taxi_p_autopilot_btn_bg.visibility = View.GONE
taxi_p_start_autopilot.visibility = View.GONE
}
fun showStartAutopilot(){
taxi_p_autopilot_starting.visibility = View.VISIBLE
taxi_p_autopilot_btn_bg.visibility = View.VISIBLE
taxi_p_start_autopilot.visibility = View.VISIBLE
taxiPStartAutopilot?.reStart()
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onAttachedToWindow")
val viewModel = ViewModelProvider(this).get(StartAutopilotViewModel::class.java)
viewModel.setStartAutopilotCallback(this)
taxi_p_start_autopilot.onClick {
//开启动画和自动驾驶
startAutopiloting()
viewModel.startAutopilot()
}
}
/**
* ①:不能启动自驾
*/
private fun unableStartAutopilot() {
taxiPStartAutopilot?.stop()
taxiPStartAutopilotCar?.stop()
taxi_p_autopilot_starting.setImageResource(R.drawable.light_00003)
taxi_p_autopilot_btn_bg.setImageResource(R.drawable.image_00000_0)
taxi_p_start_autopilot.background =
ContextCompat.getDrawable(context, R.drawable.taxi_p_start_autopilot_txt_btn_bg)
taxi_p_start_autopilot.text = resources.getString(R.string.taxi_p_start_autopilot_txt)
}
/**
* ②:可以启动自驾
*/
private fun ableStartAutopilot() {
taxiPStartAutopilot?.reStart()
taxiPStartAutopilotCar?.stop()
taxi_p_autopilot_starting.setImageResource(R.drawable.light_00003)
taxi_p_start_autopilot.background = null
taxi_p_start_autopilot.text = resources.getString(R.string.taxi_p_start_autopilot_txt)
}
/**
* ③:启动自驾中
*/
fun startAutopiloting() {
taxiPStartAutopilot?.reStart()
taxiPStartAutopilotCar?.reStart()
taxi_p_start_autopilot.background = null
taxi_p_start_autopilot?.text = resources.getString(R.string.taxi_p_start_autopilot_loading)
taxi_p_start_autopilot?.setTextColor(
ContextCompat.getColor(context, android.R.color.white)
)
}
/**
* ④:启动自驾超时
*/
override fun startAutopilotingTimeout() {
ableStartAutopilot()
}
/**
* ⑤:启动自驾失败
*/
override fun startAutopilotingFail() {
ableStartAutopilot()
}
private fun goneAllDoorState() {
actv_front_left_door.visibility = GONE
actv_front_right_door.visibility = GONE
actv_rear_left_door.visibility = GONE
actv_rear_right_door.visibility = GONE
}
override fun unableStartAutopilotByDoorState() {
unableStartAutopilot()
}
}

View File

@@ -0,0 +1,128 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.startautopilot
import androidx.lifecycle.ViewModel
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.manager.devicemanage.TaxiDoorStateManager
import com.mogo.och.common.module.manager.devicemanage.callback.DoorStateCallback
import com.mogo.och.common.module.manager.devicemanage.data.DoorPosition
import com.mogo.och.common.module.manager.devicemanage.data.DoorState
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.model.AutopilotManager
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel
import io.reactivex.disposables.Disposable
class StartAutopilotViewModel : ViewModel(),
DoorStateCallback {
private val TAG = StartAutopilotViewModel::class.java.simpleName
private var viewCallback: StartAutopilotCallback? = null
private val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L
var startCountDown: Disposable?=null
var doorOpenState = true
fun setStartAutopilotCallback(viewCallback: StartAutopilotCallback) {
TaxiDoorStateManager.addListener(TAG,this)
this.viewCallback = viewCallback
setOrderInfo()
}
private fun setOrderInfo() {
val currentOCHOrder = TaxiPassengerModel.currentOCHOrder
currentOCHOrder?.let {
val phone = it.passengerPhone
val show = if (phone.length > 8) {
//截取电话号码前三位
val phoneNumPre = phone.substring(0, 3)
//截取电话号码后四位
val phoneNumFix = phone.substring(7)
"用户:$phoneNumPre****$phoneNumFix 目的地:${it.endSiteAddr}"
} else {
"用户:${phone} 目的地:${it.endSiteAddr}"
}
viewCallback?.setOrderInfo(show)
}
}
override fun onCleared() {
super.onCleared()
this.viewCallback = null
RxUtils.disposeSubscribe(startCountDown)
TaxiDoorStateManager.removeListener(TAG)
}
/**
* 开启自动驾驶
*/
fun startAutopilot() {
val num = ParseVersionUtils.parseVersion(true, CallerAutoPilotStatusListenerManager.getDockerVersion())
if (num >= 30600) {
if(doorOpenState){
VoiceNotice.showNotice("关紧车门后再出发吧!")
ToastUtils.showShort("关紧车门后再出发吧!")
viewCallback?.unableStartAutopilotByDoorState()
return
}
}
if (RxUtils.isNotDisposed(startCountDown)) {
ToastUtils.showLong("启动中……")
return
}
if (AutopilotManager.startAutopilot().isEmpty()) {
startCountDown = RxUtils.createSubscribe(TIMER_START_AUTOPILOT_INTERVAL) {
viewCallback?.startAutopilotingTimeout()
//未启动成功20s后做处理
ToastUtils.showLong(R.string.taxi_p_start_autopilot_fail_10s_tip)
VoiceNotice.showNotice("啊哦!系统繁忙中,稍后再试试吧~", AIAssist.LEVEL2)
}
}else{
VoiceNotice.showNotice("啊哦!系统繁忙中,稍后再试试吧~", AIAssist.LEVEL2)
viewCallback?.startAutopilotingFail()
}
}
override fun hasOpenDoor(have: Boolean) {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "车门是否开着:${have}")
doorOpenState = have
UiThreadHandler.post {
viewCallback?.canStartAutopilot(!doorOpenState)
}
}
override fun doorStateChangeCallback(position: DoorPosition, state: DoorState) {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "门太变化:${position}--${state}")
runMain(position,state)
}
private fun runMain(posttion: DoorPosition, state: DoorState){
UiThreadHandler.post({
viewCallback?.setDoorStatus(posttion,state)
},UiThreadHandler.MODE.QUEUE)
}
interface StartAutopilotCallback {
fun setOrderInfo(show: String)
fun setDoorStatus(doorPosition: DoorPosition,state: DoorState)
fun canStartAutopilot(can:Boolean)
fun startAutopilotingTimeout()
fun startAutopilotingFail()
fun unableStartAutopilotByDoorState()
}
}

View File

@@ -64,10 +64,10 @@ class DebugView @JvmOverloads constructor(
fragment?.showOrHideArrivedEndLayout(true)
}
tv_show_phone_check.onClick {
fragment?.showOrHidePressengerCheckPager(isShow = true,"13号路口终(鹰眼专用)","13号路口终(鹰眼专用)","2","2","18811539480")
fragment?.showOrHideCheckAndStartAutopilotView(0)
}
tv_show_start_autopilot.onClick {
fragment?.showOrHideStartAutopilotView(true)
fragment?.showOrHideCheckAndStartAutopilotView(1)
}
tv_show_order_info.onClick {
fragment?.showOrHideServingOrderFragment(true)

View File

@@ -0,0 +1,214 @@
package com.mogo.och.taxi.passenger.widget
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.taxi.passenger.R
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_back
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_eight
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_first
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_five
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_four
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_fourth
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_nine
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_one
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_second
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_seven
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_six
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_submit
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_third
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_three
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_two
import kotlinx.android.synthetic.main.taxt_p_check_number.view.tv_taxi_passenger_number_zero
class NumberCheckView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr), View.OnClickListener {
private var index = 0
private var phone = ""
private val numSelect = arrayOfNulls<Int>(4)
private val numSelectTextView = arrayOfNulls<TextView>(4)
var submitListener: SubmitListener? = null
companion object {
const val TAG = "NumberCheckView"
}
init {
try {
initView(context)
} catch (e: Exception) {
e.printStackTrace()
}
}
fun resetNum(phone:String){
this.phone = phone
for(i in numSelect.indices){
numSelect[i] = null
}
numSelectTextView.forEach {
it?.text = ""
}
}
private fun initView(context: Context) {
d(SceneConstant.M_TAXI_P + TAG, "initView")
LayoutInflater.from(context).inflate(R.layout.taxt_p_check_number, this, true)
keyBoardLogic()
numSelectTextView[0] = tv_taxi_passenger_number_first
numSelectTextView[1] = tv_taxi_passenger_number_second
numSelectTextView[2] = tv_taxi_passenger_number_third
numSelectTextView[3] = tv_taxi_passenger_number_fourth
}
private fun keyBoardLogic() {
tv_taxi_passenger_number_one.setOnClickListener(this)
tv_taxi_passenger_number_two.setOnClickListener(this)
tv_taxi_passenger_number_three.setOnClickListener(this)
tv_taxi_passenger_number_four.setOnClickListener(this)
tv_taxi_passenger_number_five.setOnClickListener(this)
tv_taxi_passenger_number_six.setOnClickListener(this)
tv_taxi_passenger_number_seven.setOnClickListener(this)
tv_taxi_passenger_number_eight.setOnClickListener(this)
tv_taxi_passenger_number_nine.setOnClickListener(this)
tv_taxi_passenger_number_zero.setOnClickListener(this)
tv_taxi_passenger_number_back.setOnClickListener(this)
tv_taxi_passenger_number_submit.setOnClickListener(this)
tv_taxi_passenger_number_first.setOnClickListener(this)
tv_taxi_passenger_number_second.setOnClickListener(this)
tv_taxi_passenger_number_third.setOnClickListener(this)
tv_taxi_passenger_number_fourth.setOnClickListener(this)
}
override fun onClick(v: View?) {
when (v?.id) {
R.id.tv_taxi_passenger_number_one -> {showNumver(1)}
R.id.tv_taxi_passenger_number_two -> {showNumver(2)}
R.id.tv_taxi_passenger_number_three-> {showNumver(3)}
R.id.tv_taxi_passenger_number_four-> {showNumver(4)}
R.id.tv_taxi_passenger_number_five -> {showNumver(5)}
R.id.tv_taxi_passenger_number_six -> {showNumver(6)}
R.id.tv_taxi_passenger_number_seven -> {showNumver(7)}
R.id.tv_taxi_passenger_number_eight -> {showNumver(8)}
R.id.tv_taxi_passenger_number_nine -> {showNumver(9)}
R.id.tv_taxi_passenger_number_zero -> {showNumver(0)}
R.id.tv_taxi_passenger_number_back -> {deleteNumver()}
R.id.tv_taxi_passenger_number_first -> {selectIndex(0)}
R.id.tv_taxi_passenger_number_second -> {selectIndex(1)}
R.id.tv_taxi_passenger_number_third -> {selectIndex(2)}
R.id.tv_taxi_passenger_number_fourth -> {selectIndex(3)}
R.id.tv_taxi_passenger_number_submit -> {clearNumber()}
else -> {}
}
}
private fun checkAndCommit() {
val numberStr = "${numSelect[0]}${numSelect[1]}${numSelect[2]}${numSelect[3]}"
if(!phone.endsWith(numberStr)){
ToastUtils.showLong("请输入正确的手机尾号")
VoiceNotice.showNotice("验证失败!再检查一下吧~", AIAssist.LEVEL2)
return
}
submitListener?.trySubmit(numberStr)
}
private fun selectIndex(i: Int) {
index = i
changeStyle()
}
private fun showNumver(number: Int) {
if (index in 0..3) {
numSelect[index] = number
numSelectTextView[index]!!.text = number.toString()
if(index!=3){
index++
}
changeStyle()
numSelect.forEach {
if(it==null){
return
}
}
checkAndCommit()
}
}
private fun clearNumber(){
for(i in numSelect.indices){
numSelect[i] = null
}
numSelectTextView.forEach {
it?.text = ""
}
index = 0
changeStyle()
}
private fun deleteNumver() {
if (index in 0..3) {
if(numSelect[index]==null){
if(index!=0){
index--
}
changeStyle()
//return
}
numSelect[index] = null
numSelectTextView[index]!!.text = ""
}
}
private fun changeStyle() {
numSelectTextView.forEachIndexed { indexIn, textView ->
if(indexIn==index){
numSelectTextView[index]!!.setBackgroundResource(R.drawable.bg_taxi_p_checked_input_background)
numSelectTextView[index]!!.setTextColor(
ContextCompat.getColor(
context,
android.R.color.white
)
)
numSelectTextView[index]!!.setShadowLayer(
0f, 0f, 0f,
ContextCompat.getColor(
context,
android.R.color.white
)
)
}else{
numSelectTextView[indexIn]!!.setBackgroundResource(R.drawable.taxi_p_check_input_background)
numSelectTextView[indexIn]!!.setTextColor(ContextCompat.getColor(context, R.color.taxi_p_FF282F62))
numSelectTextView[indexIn]!!.setShadowLayer(
20f,
0f,
2f,
ContextCompat.getColor(context, android.R.color.white)
)
}
}
}
interface SubmitListener {
fun trySubmit(number: String)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 986 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 959 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:endColor="@color/taxi_p_5D6A8C" android:centerColor="@color/taxi_p_995D6A8C" android:startColor="@color/taxi_p_005D6A8C" android:angle="270"/>
<gradient android:endColor="@color/taxi_p_876E788B" android:startColor="@android:color/transparent" android:angle="270"/>
</shape>

View File

@@ -157,6 +157,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.mogo.och.taxi.passenger.ui.checkstartautopilot.ChekAndStartAutopilotView
android:id="@+id/chekAndStartAutopilotView"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.mogo.och.common.module.wigets.ZhiView
android:id="@+id/aciv_xiaozhi_normal"
android:layout_width="@dimen/dp_360"

View File

@@ -0,0 +1,118 @@
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
tools:ignore="MissingDefaultResource">
<TextView
android:id="@+id/tv_hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_170"
android:layout_marginTop="@dimen/dp_442"
android:text="@string/taxi_p_check_hello_text"
android:textColor="@color/taxi_p_191E3C"
android:textSize="@dimen/dp_151"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_welcome_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="@string/taxi_p_check_hello_small_text"
android:textColor="@color/taxi_p_191E3C"
android:textSize="@dimen/dp_58"
app:layout_constraintStart_toStartOf="@+id/tv_hello"
app:layout_constraintTop_toBottomOf="@+id/tv_hello" />
<TextView
android:id="@+id/tv_passenger_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="-20dp"
android:layout_marginBottom="@dimen/dp_61"
android:paddingStart="@dimen/dp_20"
android:paddingTop="@dimen/dp_20"
android:paddingEnd="@dimen/dp_20"
android:paddingBottom="@dimen/dp_20"
android:shadowRadius="20"
android:textColor="@color/taxi_p_191E3C"
android:textSize="@dimen/dp_55"
app:layout_constraintBottom_toTopOf="@+id/tv_passenger_start"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_boll"
tools:text="乘客数2位" />
<TextView
android:id="@+id/tv_passenger_start"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_44"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/taxi_p_464646"
android:textSize="@dimen/dp_46"
app:layout_constraintBottom_toBottomOf="@+id/iv_passenger_start_boll"
app:layout_constraintEnd_toStartOf="@+id/numberCheckView"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_boll"
app:layout_constraintTop_toTopOf="@+id/iv_passenger_start_boll"
tools:text="起 点 : 衡山科学城" />
<ImageView
android:id="@+id/iv_passenger_start_boll"
android:layout_width="@dimen/dp_17"
android:layout_height="@dimen/dp_17"
android:src="@drawable/taxi_p_passenger_check_start_boll"
app:layout_constraintBottom_toTopOf="@+id/iv_passenger_start_end_line"
app:layout_constraintEnd_toEndOf="@+id/iv_passenger_start_end_line"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_end_line" />
<ImageView
android:id="@+id/iv_passenger_start_end_line"
android:layout_width="@dimen/dp_1"
android:layout_height="@dimen/dp_78"
android:src="@drawable/taxi_p_passenger_check_start_end_line"
app:layout_constraintBottom_toTopOf="@+id/iv_passenger_end_boll"
app:layout_constraintEnd_toEndOf="@+id/iv_passenger_end_boll"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_end_boll" />
<ImageView
android:id="@+id/iv_passenger_end_boll"
android:layout_width="@dimen/dp_17"
android:layout_height="@dimen/dp_17"
android:layout_marginStart="@dimen/dp_170"
android:layout_marginBottom="@dimen/dp_148"
android:src="@drawable/taxi_p_passenger_check_end_boll"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_passenger_end"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_44"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/taxi_p_464646"
android:textSize="@dimen/dp_46"
app:layout_constraintBottom_toBottomOf="@+id/iv_passenger_end_boll"
app:layout_constraintEnd_toStartOf="@+id/numberCheckView"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_end_boll"
app:layout_constraintTop_toTopOf="@+id/iv_passenger_end_boll"
tools:text="终 点 : 石鼓收费站" />
<com.mogo.och.taxi.passenger.widget.NumberCheckView
android:id="@+id/numberCheckView"
android:layout_width="1103dp"
android:layout_height="1131dp"
android:layout_marginEnd="@dimen/dp_142"
android:layout_marginBottom="@dimen/dp_166"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</merge>

View File

@@ -0,0 +1,175 @@
<?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"
android:layout_width="1103dp"
android:layout_height="1131dp"
android:background="@drawable/taxt_p_check_input_bg"
tools:ignore="MissingDefaultResource">
<TextView
android:id="@+id/tv_taxi_passenger_number_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_181"
android:text="@string/taxi_p_check_input_phone_tail_title"
android:textColor="@color/taxi_p_151937"
android:textSize="@dimen/dp_46"
app:layout_constraintStart_toStartOf="@+id/tv_taxi_passenger_number_first"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_taxi_passenger_number_first"
style="@style/och_check_number_checked"
android:layout_width="@dimen/dp_173"
android:layout_height="@dimen/dp_173"
android:layout_marginTop="@dimen/dp_58"
android:layout_marginEnd="@dimen/dp_44"
android:backgroundTintMode="screen"
android:gravity="center"
android:textSize="@dimen/dp_76"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_second"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_taxi_passenger_number_title" />
<TextView
android:id="@+id/tv_taxi_passenger_number_second"
style="@style/och_check_number"
android:layout_marginEnd="@dimen/dp_44"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_third"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_first"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_first" />
<TextView
android:id="@+id/tv_taxi_passenger_number_third"
style="@style/och_check_number"
android:layout_marginEnd="@dimen/dp_44"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_fourth"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_second"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_second" />
<TextView
android:id="@+id/tv_taxi_passenger_number_fourth"
style="@style/och_check_number"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_third"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_third" />
<TextView
android:id="@+id/tv_taxi_passenger_number_back"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:layout_marginBottom="@dimen/dp_181"
android:text="@string/taxi_p_delete"
android:textSize="@dimen/dp_36"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_zero"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_taxi_passenger_number_zero"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:text="0"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_submit"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_back"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" />
<TextView
android:id="@+id/tv_taxi_passenger_number_submit"
style="@style/och_check_number_keyboard"
android:text="清空"
android:textSize="@dimen/dp_36"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_zero"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" />
<TextView
android:id="@+id/tv_taxi_passenger_number_seven"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:layout_marginBottom="24dp"
android:text="7"
app:layout_constraintBottom_toTopOf="@id/tv_taxi_passenger_number_back"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_eight"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_taxi_passenger_number_eight"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:text="8"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_nine"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_seven"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_seven" />
<TextView
android:id="@+id/tv_taxi_passenger_number_nine"
style="@style/och_check_number_keyboard"
android:text="9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_eight"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_seven" />
<TextView
android:id="@+id/tv_taxi_passenger_number_four"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:layout_marginBottom="24dp"
android:text="4"
app:layout_constraintBottom_toTopOf="@id/tv_taxi_passenger_number_seven"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_five"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_taxi_passenger_number_five"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:text="5"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_six"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_four"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_four" />
<TextView
android:id="@+id/tv_taxi_passenger_number_six"
style="@style/och_check_number_keyboard"
android:text="6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_five"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_four" />
<TextView
android:id="@+id/tv_taxi_passenger_number_one"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:layout_marginBottom="24dp"
android:text="1"
app:layout_constraintBottom_toTopOf="@id/tv_taxi_passenger_number_four"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_two"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_taxi_passenger_number_two"
style="@style/och_check_number_keyboard"
android:layout_marginEnd="@dimen/dp_45"
android:text="2"
app:layout_constraintEnd_toStartOf="@+id/tv_taxi_passenger_number_three"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_one"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_one" />
<TextView
android:id="@+id/tv_taxi_passenger_number_three"
style="@style/och_check_number_keyboard"
android:text="3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_two"
app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_one" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,41 @@
<?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"
android:id="@+id/cl_contain"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingDefaultResource">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_check_autopilot"
android:src="@drawable/check2startautopilt_000"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.mogo.och.taxi.passenger.ui.checkstartautopilot.check.CheckView
android:id="@+id/checkPhoneNumber"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.mogo.och.taxi.passenger.ui.checkstartautopilot.startautopilot.StartAutopilotView
android:id="@+id/startAutopilotView"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:id="@+id/startAutopilotClose"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:src="@drawable/taxi_p_passenger_arrived_close"
android:visibility="gone"
android:layout_marginEnd="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_50"
android:layout_width="@dimen/dp_120"
android:layout_height="@dimen/dp_120"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,151 @@
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/cl_car_type"
tools:ignore="MissingDefaultResource">
<ImageView
android:id="@+id/taxi_p_autopilot_starting"
android:layout_width="@dimen/dp_1600"
android:layout_height="1200dp"
android:layout_marginTop="@dimen/dp_150"
android:layout_gravity="center_horizontal"
android:src="@drawable/light_00003"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<ImageView
android:id="@+id/taxi_p_autopilot_btn_bg"
android:layout_width="1000dp"
android:layout_height="500dp"
android:clickable="false"
android:visibility="gone"
tools:visibility="visible"
android:src="@drawable/image_00000_0"
android:layout_marginBottom="@dimen/dp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/taxi_p_start_autopilot"
android:visibility="gone"
tools:visibility="visible"
android:layout_width="@dimen/dp_520"
android:layout_height="@dimen/dp_152"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_175"
android:text="@string/taxi_p_start_autopilot_txt"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_52"
android:textStyle="bold"
android:layout_marginStart="@dimen/dp_15"
android:background="@drawable/taxi_p_start_autopilot_txt_btn_bg"
app:layout_constraintBottom_toBottomOf="@+id/taxi_p_autopilot_btn_bg"
app:layout_constraintLeft_toLeftOf="@+id/taxi_p_autopilot_btn_bg"
app:layout_constraintRight_toRightOf="@+id/taxi_p_autopilot_btn_bg" />
<View
app:layout_constraintBottom_toBottomOf="parent"
android:background="@drawable/taxi_p_start_autopilot_bottom_bg"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_250"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_orderinfo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="@dimen/dp_59"
tools:text="用户1234882382 目的地:环球贸易中心"
android:textColor="@color/taxi_p_333333"
android:textSize="@dimen/dp_44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/gl_vertical_center"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/gl_horizontal_center"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_front_right_door"
android:gravity="center"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@+id/gl_horizontal_center"
app:layout_constraintBottom_toBottomOf="@+id/gl_horizontal_center"
app:layout_constraintStart_toStartOf="@+id/gl_vertical_center"
android:layout_marginStart="@dimen/dp_106"
android:text="右前车门未关"
android:textSize="@dimen/dp_35"
android:textColor="@color/taxi_p_2B364B"
android:background="@drawable/taxi_p_front_right_door_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_front_left_door"
android:gravity="center"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@+id/gl_horizontal_center"
app:layout_constraintBottom_toBottomOf="@+id/gl_horizontal_center"
app:layout_constraintEnd_toStartOf="@+id/gl_vertical_center"
android:layout_marginEnd="@dimen/dp_106"
android:text="左前车门未关"
android:textSize="@dimen/dp_35"
android:textColor="@color/taxi_p_2B364B"
android:background="@drawable/taxi_p_front_left_door_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_rear_left_door"
android:gravity="center"
android:visibility="gone"
app:layout_constraintEnd_toStartOf="@+id/gl_vertical_center"
app:layout_constraintTop_toBottomOf="@+id/gl_horizontal_center"
android:layout_marginEnd="@dimen/dp_135"
android:layout_marginTop="@dimen/dp_142"
android:text="左后车门未关"
android:textSize="@dimen/dp_35"
android:textColor="@color/taxi_p_2B364B"
android:background="@drawable/taxi_p_rear_left_door_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_rear_right_door"
android:gravity="center"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@+id/gl_vertical_center"
app:layout_constraintTop_toBottomOf="@+id/gl_horizontal_center"
android:layout_marginStart="@dimen/dp_135"
android:layout_marginTop="@dimen/dp_142"
android:text="右后车门未关"
android:textSize="@dimen/dp_35"
android:textColor="@color/taxi_p_2B364B"
android:background="@drawable/taxi_p_rear_right_door_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -265,4 +265,74 @@
<item>@drawable/arrive_dest_030</item>
</string-array>
<string-array name="check2startautopilt">
<item>@drawable/check2startautopilt_000</item>
<item>@drawable/check2startautopilt_001</item>
<item>@drawable/check2startautopilt_002</item>
<item>@drawable/check2startautopilt_003</item>
<item>@drawable/check2startautopilt_004</item>
<item>@drawable/check2startautopilt_005</item>
<item>@drawable/check2startautopilt_006</item>
<item>@drawable/check2startautopilt_007</item>
<item>@drawable/check2startautopilt_008</item>
<item>@drawable/check2startautopilt_009</item>
<item>@drawable/check2startautopilt_010</item>
<item>@drawable/check2startautopilt_011</item>
<item>@drawable/check2startautopilt_012</item>
<item>@drawable/check2startautopilt_013</item>
<item>@drawable/check2startautopilt_014</item>
<item>@drawable/check2startautopilt_015</item>
<item>@drawable/check2startautopilt_016</item>
<item>@drawable/check2startautopilt_017</item>
<item>@drawable/check2startautopilt_018</item>
<item>@drawable/check2startautopilt_019</item>
<item>@drawable/check2startautopilt_020</item>
<item>@drawable/check2startautopilt_021</item>
<item>@drawable/check2startautopilt_022</item>
<item>@drawable/check2startautopilt_023</item>
<item>@drawable/check2startautopilt_024</item>
<item>@drawable/check2startautopilt_025</item>
<item>@drawable/check2startautopilt_026</item>
<item>@drawable/check2startautopilt_027</item>
<item>@drawable/check2startautopilt_028</item>
<item>@drawable/check2startautopilt_029</item>
<item>@drawable/check2startautopilt_030</item>
<item>@drawable/check2startautopilt_031</item>
<item>@drawable/check2startautopilt_032</item>
<item>@drawable/check2startautopilt_033</item>
<item>@drawable/check2startautopilt_034</item>
<item>@drawable/check2startautopilt_035</item>
<item>@drawable/check2startautopilt_036</item>
<item>@drawable/check2startautopilt_037</item>
<item>@drawable/check2startautopilt_038</item>
<item>@drawable/check2startautopilt_039</item>
<item>@drawable/check2startautopilt_040</item>
<item>@drawable/check2startautopilt_041</item>
<item>@drawable/check2startautopilt_042</item>
<item>@drawable/check2startautopilt_043</item>
<item>@drawable/check2startautopilt_044</item>
<item>@drawable/check2startautopilt_045</item>
<item>@drawable/check2startautopilt_046</item>
<item>@drawable/check2startautopilt_047</item>
<item>@drawable/check2startautopilt_048</item>
<item>@drawable/check2startautopilt_050</item>
<item>@drawable/check2startautopilt_051</item>
<item>@drawable/check2startautopilt_052</item>
<item>@drawable/check2startautopilt_053</item>
<item>@drawable/check2startautopilt_054</item>
<item>@drawable/check2startautopilt_055</item>
<item>@drawable/check2startautopilt_056</item>
<item>@drawable/check2startautopilt_057</item>
<item>@drawable/check2startautopilt_058</item>
<item>@drawable/check2startautopilt_060</item>
</string-array>
</resources>

View File

@@ -43,6 +43,13 @@
<color name="taxi_p_B37E90BF">#B37E90BF</color>
<color name="taxi_p_464646">#464646</color>
<color name="taxi_p_191E3C">#191E3C</color>
<color name="taxi_p_378EFB">#378EFB</color>
<color name="taxi_p_876E788B">#876E788B</color>
<color name="taxi_p_333333">#333333</color>
</resources>