[6.2.6]
[taxi-p] [check phone startAutopilot]
@@ -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? {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启自动驾驶
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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?)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 956 KiB |
|
After Width: | Height: | Size: 847 KiB |
|
After Width: | Height: | Size: 981 KiB |
|
After Width: | Height: | Size: 870 KiB |
|
After Width: | Height: | Size: 836 KiB |
|
After Width: | Height: | Size: 881 KiB |
|
After Width: | Height: | Size: 976 KiB |
|
After Width: | Height: | Size: 869 KiB |
|
After Width: | Height: | Size: 922 KiB |
|
After Width: | Height: | Size: 860 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 925 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 893 KiB |
|
After Width: | Height: | Size: 1004 KiB |
|
After Width: | Height: | Size: 986 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 984 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 993 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 959 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1009 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 943 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 139 KiB |
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
118
OCH/taxi/passenger/src/main/res/layout/taxt_p_check.xml
Normal 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>
|
||||
175
OCH/taxi/passenger/src/main/res/layout/taxt_p_check_number.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||