[6.2.6]
[taxi-u-p] [启动自驾和手机号验证]
@@ -0,0 +1,239 @@
|
||||
package com.mogo.och.common.module.utils
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.widget.ImageView
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import java.lang.ref.SoftReference
|
||||
import java.util.concurrent.ArrayBlockingQueue
|
||||
import java.util.concurrent.Future
|
||||
|
||||
class BigFrameAnimatorContainer (resId: Int,
|
||||
fps: Int,
|
||||
imageView: ImageView,
|
||||
isOnce: Boolean = false,// 一次性的 true 值播放一次 false 重复播放
|
||||
initFirstFrame:Boolean = true,
|
||||
width:Int = -1,
|
||||
height:Int = -1){
|
||||
private val TAG = "BigFrameAnimatorContainer"
|
||||
private lateinit var mFrames: IntArray // 帧数组
|
||||
private var mIndex = 0 // 当前帧
|
||||
private var mShouldRun = false // 开始/停止播放用
|
||||
private var mIsRunning = false // 动画是否正在播放,防止重复播放
|
||||
private var mSoftReferenceImageView: SoftReference<ImageView>? = null // 软引用ImageView,以便及时释放掉
|
||||
private var mHandler: Handler? = null
|
||||
private var mDelayMillis = 0
|
||||
private var mOnAnimationStoppedListener: OnAnimationStoppedListener? = null//播放停止监听
|
||||
var isOnce:Boolean = false
|
||||
|
||||
private val readQueue = ArrayBlockingQueue<Pair<Bitmap,BitmapFactory.Options>>(8,true)
|
||||
private val writeQueue = ArrayBlockingQueue<Pair<Bitmap,BitmapFactory.Options>>(8,true)
|
||||
|
||||
private var currentPoll:Pair<Bitmap,BitmapFactory.Options>?=null
|
||||
|
||||
private var decodeImage: Future<*>?=null
|
||||
|
||||
|
||||
init {
|
||||
createAnimation(imageView, getData(resId), fps,initFirstFrame,width,height)
|
||||
this.isOnce = isOnce
|
||||
}
|
||||
|
||||
private fun createAnimation(
|
||||
imageView: ImageView,
|
||||
frames: IntArray,
|
||||
fps: Int,
|
||||
initFirstFrame: Boolean,
|
||||
width: Int,
|
||||
height: Int
|
||||
) {
|
||||
mHandler = object: Handler(Looper.myLooper()!!){
|
||||
override fun handleMessage(msg: Message) {
|
||||
super.handleMessage(msg)
|
||||
CallerLogger.d(TAG,"消息类型:${msg.what}")
|
||||
if(msg.what==0){
|
||||
val imageView = mSoftReferenceImageView!!.get()
|
||||
if (!mShouldRun || imageView == null) {
|
||||
mIsRunning = false
|
||||
if (mOnAnimationStoppedListener != null) {
|
||||
mOnAnimationStoppedListener!!.AnimationStopped()
|
||||
}
|
||||
return
|
||||
}
|
||||
mIsRunning = true
|
||||
//新开线程去读下一帧
|
||||
if (imageView.isShown) {
|
||||
if (!mShouldRun) {
|
||||
mIsRunning = false
|
||||
CallerLogger.d(TAG,"暂停播放")
|
||||
if (mOnAnimationStoppedListener != null) {
|
||||
mOnAnimationStoppedListener!!.AnimationStopped()
|
||||
}
|
||||
return
|
||||
}
|
||||
mHandler?.sendEmptyMessageDelayed(0,mDelayMillis.toLong())
|
||||
if(currentPoll!=null){
|
||||
writeQueue.offer(currentPoll)
|
||||
currentPoll = null
|
||||
}
|
||||
currentPoll = readQueue.poll()
|
||||
if(currentPoll!=null){
|
||||
val bitmap = currentPoll!!.first
|
||||
imageView.setImageBitmap(bitmap)
|
||||
}else{
|
||||
CallerLogger.d(TAG,"加载过慢了")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mFrames = frames
|
||||
mIndex = -1
|
||||
mSoftReferenceImageView = SoftReference(imageView)
|
||||
mShouldRun = false
|
||||
mIsRunning = false
|
||||
mDelayMillis = 1000 / fps //帧动画时间间隔,毫秒
|
||||
CallerLogger.d(TAG,"两帧时间:${mDelayMillis}")
|
||||
if(initFirstFrame) {
|
||||
imageView.setImageResource(mFrames[0])
|
||||
}
|
||||
var widthImage = -1
|
||||
var heightImage = -1
|
||||
var config = Bitmap.Config.ARGB_8888
|
||||
if(width>0&&height>0){
|
||||
widthImage = width
|
||||
heightImage = height
|
||||
}else{
|
||||
try {
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
widthImage = bmp.width
|
||||
heightImage = bmp.height
|
||||
config = bmp.config
|
||||
}catch (e:Exception){
|
||||
throw RuntimeException("请设置图片或传递大小")
|
||||
}
|
||||
}
|
||||
// 当图片大小类型相同时进行复用,避免频繁GC
|
||||
|
||||
for (i in 0..7) {
|
||||
val mBitmap = Bitmap.createBitmap(widthImage, heightImage, config)
|
||||
val mBitmapOptions = BitmapFactory.Options()
|
||||
//设置Bitmap内存复用
|
||||
mBitmapOptions.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收
|
||||
mBitmapOptions.inMutable = true //解码时返回可变Bitmap
|
||||
mBitmapOptions.inSampleSize = 1 //缩放比例
|
||||
writeQueue.add(Pair(mBitmap,mBitmapOptions))
|
||||
}
|
||||
|
||||
decodeImage = ThreadUtils.getIoPool().submit {
|
||||
while (true) {
|
||||
val startTime = System.currentTimeMillis()
|
||||
val (bitmap1, options) = writeQueue.take()
|
||||
val index: Int = next
|
||||
val imageRes: Int = mFrames[index]
|
||||
var bitmap: Bitmap? = null
|
||||
try {
|
||||
bitmap = BitmapFactory.decodeResource(
|
||||
imageView.resources,
|
||||
imageRes,
|
||||
options
|
||||
)
|
||||
options.inBitmap = bitmap
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
if (bitmap != null) {
|
||||
readQueue.put(Pair(bitmap, options))
|
||||
}
|
||||
val dexTime = System.currentTimeMillis() - startTime
|
||||
CallerLogger.d(TAG, "decode用时:${dexTime}ms index ${index}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//循环读取下一帧
|
||||
private val next: Int
|
||||
get() {
|
||||
mIndex++
|
||||
if (mIndex >= mFrames.size){
|
||||
mIndex = 0
|
||||
}
|
||||
return mIndex
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun reStart(){
|
||||
mIndex = 0
|
||||
mIsRunning = false
|
||||
start()
|
||||
}
|
||||
|
||||
fun release(){
|
||||
mShouldRun = false
|
||||
decodeImage?.cancel(true)
|
||||
}
|
||||
|
||||
/**
|
||||
* 播放动画,同步锁防止多线程读帧时,数据安全问题
|
||||
*/
|
||||
@Synchronized
|
||||
fun start() {
|
||||
mShouldRun = true
|
||||
if (mIsRunning) return
|
||||
mHandler?.removeCallbacksAndMessages(null)
|
||||
mHandler?.sendEmptyMessage(0)
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止播放
|
||||
*/
|
||||
@Synchronized
|
||||
fun stop() {
|
||||
mShouldRun = false
|
||||
}
|
||||
|
||||
fun isPlaying():Boolean{
|
||||
return mShouldRun
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置停止播放监听
|
||||
* @param listener 设置监听
|
||||
*/
|
||||
fun setOnAnimStopListener(listener: OnAnimationStoppedListener?) {
|
||||
mOnAnimationStoppedListener = listener
|
||||
}
|
||||
|
||||
/**
|
||||
* 从xml中读取帧数组
|
||||
* @param resId
|
||||
* @return
|
||||
*/
|
||||
fun getData(resId: Int): IntArray {
|
||||
val array = AbsMogoApplication.getApp().resources.obtainTypedArray(resId)
|
||||
val len = array.length()
|
||||
val intArray = IntArray(array.length())
|
||||
for (i in 0 until len) {
|
||||
intArray[i] = array.getResourceId(i, 0)
|
||||
}
|
||||
array.recycle()
|
||||
return intArray
|
||||
}
|
||||
|
||||
fun setData(mFrames: IntArray){
|
||||
this.mFrames = mFrames
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止播放监听
|
||||
*/
|
||||
interface OnAnimationStoppedListener {
|
||||
fun AnimationStopped()
|
||||
}
|
||||
}
|
||||
@@ -63,8 +63,8 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
|
||||
// 10 接驾中
|
||||
mView?.showOrHideStartAutopilotView(isShow = false)
|
||||
mView?.showOrHidePressengerCheckPager(isShow = false)
|
||||
mView?.showOrHideCheckAndStartAutopilotView(2)
|
||||
|
||||
mView?.showOrHideArrivedEndLayout(isShow = false)
|
||||
overMapViewClear()
|
||||
}
|
||||
@@ -72,55 +72,56 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
|
||||
// 20 司机到达上车点
|
||||
mView?.showOrHideArrivedEndLayout(isShow = false)
|
||||
mView?.showOrHidePressengerCheckPager(true)
|
||||
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()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.None -> {
|
||||
// 00 默认状态,在不同任务之间切换时使用
|
||||
mView?.showOrHideStartAutopilotView(isShow = false)
|
||||
mView?.showOrHidePressengerCheckPager(isShow = false)
|
||||
mView?.showOrHideCheckAndStartAutopilotView(2)
|
||||
|
||||
mView?.showOrHideArrivedEndLayout(isShow = false)
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
@@ -19,15 +19,15 @@ import com.mogo.och.taxi.passenger.ui.statusview.StatusBarView;
|
||||
@Route( path = MogoServicePaths.PATH_STATUS_VIEW_MANAGER )
|
||||
public class StatusViewManager implements IStatusViewLayout {
|
||||
|
||||
|
||||
private StatusBarView statusBarView;
|
||||
@NonNull
|
||||
@Override
|
||||
public View getStatusView(Context context) {
|
||||
return new StatusBarView(context);
|
||||
return statusBarView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
|
||||
statusBarView = new StatusBarView(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@ package com.mogo.och.taxi.passenger.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
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.Companion.M_TAXI_P
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils
|
||||
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils
|
||||
import com.mogo.map.listener.IMogoMapListener
|
||||
import com.mogo.map.uicontroller.VisualAngleMode
|
||||
import com.mogo.och.common.module.utils.FrameAnimatorContainer
|
||||
@@ -19,10 +21,11 @@ import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter
|
||||
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.startautopilot.StartAutopilotView
|
||||
import com.mogo.och.taxi.passenger.ui.statusview.StatusBarView
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.arrivedView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.bottom
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.chekAndStartAutopilotView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.ck_setting
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.clSettingView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.infoVideoView
|
||||
@@ -33,7 +36,6 @@ import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.pcnActionView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.romaDistanceView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.romaPView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.rv_location_center
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
/**
|
||||
* 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况
|
||||
@@ -47,18 +49,13 @@ class TaxiPassengerBaseFragment() :
|
||||
MvpFragment<TaxiPassengerBaseFragment?, BaseTaxiPassengerPresenter?>(), IMogoMapListener,
|
||||
TaxiPassengerTaxiView {
|
||||
|
||||
/**
|
||||
* 手机号后四位验证
|
||||
*/
|
||||
private var mArrivedCheckView: WeakReference<TaxiPassengerCheckView?>? = null
|
||||
|
||||
/**
|
||||
* 启动自驾页面
|
||||
*/
|
||||
private var mStartAutopilotView: WeakReference<StartAutopilotView?>? = null
|
||||
|
||||
private var createProgressDialogAnim: FrameAnimatorContainer?=null
|
||||
|
||||
private var tipXiaoZhiDelay: Disposable?=null
|
||||
|
||||
private var statusBarView: StatusBarView? = null
|
||||
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.taxt_u_p_base_fragment
|
||||
}
|
||||
@@ -77,6 +74,14 @@ class TaxiPassengerBaseFragment() :
|
||||
overMapView.onCreateView(savedInstanceState)
|
||||
overMapView.hideResetView()
|
||||
|
||||
(ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_VIEW_MANAGER)
|
||||
.navigation() as? IStatusViewLayout)?.apply {
|
||||
val statusView = getStatusView(requireContext())
|
||||
if (statusView is StatusBarView) {
|
||||
statusBarView = statusView
|
||||
}
|
||||
}
|
||||
|
||||
// createProgressDialogAnim = FrameAnimatorContainer(R.array.xiaozhi_normal, 20,aciv_xiaozhi_normal)
|
||||
// createProgressDialogAnim?.setOnAnimStopListener(object : FrameAnimatorContainer.OnAnimationStoppedListener{
|
||||
// override fun AnimationStopped() {
|
||||
@@ -242,34 +247,39 @@ class TaxiPassengerBaseFragment() :
|
||||
overMapView.setDebugMode(true)
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示或者隐藏乘客可点击自动驾驶页面
|
||||
* 乘客验证成功,页面显示,按钮置于不可点击
|
||||
* 司机端确认可点击开启自动驾驶, 按钮置为可点击
|
||||
* 订单前往目的地,页面消失
|
||||
*
|
||||
* @param isShow
|
||||
*/
|
||||
fun showOrHideStartAutopilotView(isShow: Boolean) {
|
||||
if (isShow) {
|
||||
exitFullVideoScreen(false)
|
||||
if (mStartAutopilotView == null || mStartAutopilotView!!.get() == null) {
|
||||
mStartAutopilotView = WeakReference(StartAutopilotView(requireContext()))
|
||||
fun showOrHideCheckAndStartAutopilotView(status:Int){
|
||||
when (status) {
|
||||
0 -> {
|
||||
chekAndStartAutopilotView.visibility = View.VISIBLE
|
||||
statusBarView?.visibility = View.GONE
|
||||
chekAndStartAutopilotView.resetCheckView()
|
||||
}
|
||||
mStartAutopilotView?.get()?.let {
|
||||
OverlayViewUtils.showOverlayView(activity, it)
|
||||
1 -> {
|
||||
chekAndStartAutopilotView.visibility = View.VISIBLE
|
||||
statusBarView?.visibility = View.GONE
|
||||
chekAndStartAutopilotView.startAnimation2StartAutopilit()
|
||||
}
|
||||
} else {
|
||||
mStartAutopilotView?.get()?.let {
|
||||
OverlayViewUtils.dismissOverlayView(it)
|
||||
RxUtils.createSubscribe(30_000) {
|
||||
VoiceNotice.showNotice("想和我对话的时候可以直接戳我,也可以对我说\\'你好小智\\'!", AIAssist.LEVEL2)
|
||||
}
|
||||
2 -> {
|
||||
chekAndStartAutopilotView.visibility = View.GONE
|
||||
statusBarView?.visibility = View.VISIBLE
|
||||
chekAndStartAutopilotView.resetCheckView()
|
||||
}
|
||||
mStartAutopilotView = null
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
fun tipXiaoZhi(){
|
||||
RxUtils.disposeSubscribe(tipXiaoZhiDelay)
|
||||
tipXiaoZhiDelay = RxUtils.createSubscribe(30_000) {
|
||||
VoiceNotice.showNotice(
|
||||
"想和我对话的时候可以直接戳我,也可以对我说\\'你好小智\\'!",
|
||||
AIAssist.LEVEL2
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 显示或者隐藏到达乘客站点的洁面
|
||||
* ① 取消订单 可有可无
|
||||
@@ -302,33 +312,6 @@ class TaxiPassengerBaseFragment() :
|
||||
overMapView?.clearCustomPolyline()
|
||||
}
|
||||
|
||||
/**
|
||||
* ① 取消订单 到达上车点后乘客取消订单 隐藏乘客验证页面
|
||||
* ② 司机到达上车点 到达上车点 展示乘客验证页面
|
||||
* ③ 乘客到达上车点 手机号验证成功后 隐藏乘客验证页面
|
||||
* ④ debug 使用
|
||||
*/
|
||||
fun showOrHidePressengerCheckPager(
|
||||
isShow: Boolean,
|
||||
) {
|
||||
try {
|
||||
if (isShow) {
|
||||
exitFullVideoScreen(false)
|
||||
if (mArrivedCheckView == null || mArrivedCheckView!!.get() == null) {
|
||||
mArrivedCheckView = WeakReference(TaxiPassengerCheckView(context))
|
||||
}
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -5,20 +5,18 @@ import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
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.FrameAnimatorContainer
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
|
||||
import com.shuyu.gsyvideoplayer.GSYVideoManager
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.aciv_bg
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.aciv_close
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.actv_endstation
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.svp_frame
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.v_video_right_rear_view
|
||||
|
||||
/**
|
||||
@@ -40,24 +38,23 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
|
||||
|
||||
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
|
||||
|
||||
private var taxiPxiaozhiLove: FrameAnimatorContainer?=null
|
||||
|
||||
|
||||
private fun initView() {
|
||||
d(SceneConstant.M_TAXI_P + TAG, "initView")
|
||||
LayoutInflater.from(context).inflate(R.layout.taxt_u_p_arrived_end_panel, this, true)
|
||||
svp_frame.setBackgroundResource(R.drawable.tail_ani_0000)
|
||||
svp_frame.setIsTouchWiget(false)
|
||||
svp_frame.setIsTouchWigetFull(false)
|
||||
svp_frame.enableshowProgressDialog = false
|
||||
svp_frame.enableDoubleClick = false
|
||||
GSYVideoManager.instance().enableRawPlay(AbsMogoApplication.getApp())
|
||||
val url = "android.resource://" + context.packageName + "/" + R.raw.end_video
|
||||
gsyVideoOptionBuilder.setUrl(url)
|
||||
.setCacheWithPlay(false)
|
||||
.setPlayTag("TaxiPassengerArrivedView")
|
||||
.build(svp_frame)
|
||||
|
||||
aciv_close.onClick {
|
||||
visibility = View.GONE
|
||||
}
|
||||
|
||||
taxiPxiaozhiLove = FrameAnimatorContainer(R.array.arrived_dest, 18,aciv_bg)
|
||||
taxiPxiaozhiLove?.setOnAnimStopListener(object : FrameAnimatorContainer.OnAnimationStoppedListener{
|
||||
override fun AnimationStopped() {
|
||||
d(SceneConstant.M_TAXI_P + TAG, "动画暂停")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
@@ -65,12 +62,10 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
|
||||
d(SceneConstant.M_TAXI_P + TAG, "展示---:${isVisible}")
|
||||
if(isVisible){
|
||||
v_video_right_rear_view.resetView()
|
||||
taxiPxiaozhiLove?.reStart()
|
||||
}else{
|
||||
svp_frame.setBackgroundResource(R.drawable.tail_ani_0000)
|
||||
svp_frame.setVideoAllCallBack(null)
|
||||
svp_frame.onVideoReset()
|
||||
svp_frame.release()
|
||||
v_video_right_rear_view.resetView()
|
||||
taxiPxiaozhiLove?.stop()
|
||||
RxUtils.disposeSubscribe(subscribe)
|
||||
}
|
||||
}
|
||||
@@ -89,12 +84,6 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
|
||||
* 设置目的地重置星星状态
|
||||
*/
|
||||
fun setDataAndStartAnimation() {
|
||||
svp_frame.setVideoAllCallBack(object : GSYSampleCallBack() {
|
||||
override fun onAutoComplete(url: String?, vararg objects: Any?) {
|
||||
svp_frame.setBackgroundResource(R.drawable.tail_ani_0090)
|
||||
}
|
||||
})
|
||||
svp_frame.startPlayLogic()
|
||||
subscribe = RxUtils.createSubscribe(60_000) {
|
||||
visibility = View.GONE
|
||||
}
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.mogo.och.taxi.passenger.ui.checkstartautopilot
|
||||
|
||||
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_u_p_check_startautopilot.view.aciv_check_autopilot
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_startautopilot.view.checkPhoneNumber
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_startautopilot.view.startAutopilotClose
|
||||
import kotlinx.android.synthetic.main.taxt_u_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
|
||||
|
||||
private fun initView(context: Context) {
|
||||
d(SceneConstant.M_TAXI_P + TAG, "initView")
|
||||
LayoutInflater.from(context).inflate(R.layout.taxt_u_p_check_startautopilot, this, true)
|
||||
aniCheck2StartAutopilotView =
|
||||
BigFrameAnimatorContainer(R.array.check2startautopilt, 32, aciv_check_autopilot, false)
|
||||
|
||||
startAutopilotClose.onClick {
|
||||
visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
if (isVisible) {
|
||||
//aniCheck2StartAutopilotView?.start()
|
||||
} else {
|
||||
//aniCheck2StartAutopilotView?.stop()
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.mogo.och.taxi.passenger.ui.checkstartautopilot
|
||||
|
||||
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 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: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) {
|
||||
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,106 @@
|
||||
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_u_p_check.view.numberCheckView
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check.view.tv_passenger_count
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check.view.tv_passenger_end
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check.view.tv_passenger_start
|
||||
|
||||
/**
|
||||
* V2X预警事件view:通过FloatWindow呈现,无需加入到自定义layout中
|
||||
*
|
||||
* Created on 2022/3/16
|
||||
*/
|
||||
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_u_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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.passenger.ui.check
|
||||
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.check
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean
|
||||
@@ -6,25 +6,23 @@ 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(), IOCHTaxiPassengerOrderStatusCallback {
|
||||
class ChekViewModel : ViewModel() {
|
||||
|
||||
private val TAG = ChekViewModel::class.java.simpleName
|
||||
|
||||
private var viewCallback: CheckCallback? = null
|
||||
|
||||
init {
|
||||
TaxiPassengerModel.setOrderStatusCallback(TAG,this)
|
||||
}
|
||||
|
||||
fun setStartAutopilotCallback(viewCallback: CheckCallback) {
|
||||
this.viewCallback = viewCallback
|
||||
setOrderInfo()
|
||||
}
|
||||
fun checkAndUpdateStatus(phone: String) {
|
||||
TaxiPassengerModel.checkPhoneAndUpdateStatus(phone)
|
||||
}
|
||||
|
||||
private fun setOrderInfo() {
|
||||
fun setOrderInfo() {
|
||||
val currentOCHOrder = TaxiPassengerModel.currentOCHOrder
|
||||
currentOCHOrder?.let { order ->
|
||||
viewCallback?.setOrderInfo(order.orderStartSite?.siteName,
|
||||
@@ -32,17 +30,9 @@ class ChekViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallback {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) {
|
||||
super.onCurrentOrderStatusChanged(order)
|
||||
if(order == null || order.orderStatus != TaxiPassengerOrderStatusEnum.UserArriveAtStart.code) {
|
||||
this.viewCallback?.dismissWindow()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
this.viewCallback = null
|
||||
TaxiPassengerModel.setOrderStatusCallback(TAG, null)
|
||||
}
|
||||
|
||||
interface CheckCallback {
|
||||
@@ -50,8 +40,6 @@ class ChekViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallback {
|
||||
endSiteAddr: String?,
|
||||
passengerNum: String?,
|
||||
phone: String?)
|
||||
|
||||
fun dismissWindow()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.passenger.ui.startautopilot
|
||||
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.startautopilot
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -6,11 +6,9 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
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.eagle.core.utilcode.util.OverlayViewUtils
|
||||
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
|
||||
@@ -21,12 +19,9 @@ import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.actv_fr
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.actv_orderinfo
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.actv_rear_left_door
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.actv_rear_right_door
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.iv_xiaozhi_belt
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.starting_autopilot_view_close
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.taxi_p_autopilot_btn_bg
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.taxi_p_autopilot_starting
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.taxi_p_start_autopilot
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_start_autopilot_view.view.cl_car_type
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
@@ -44,25 +39,15 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
|
||||
context,
|
||||
attributeSet,
|
||||
defStyleAttr
|
||||
context, attributeSet, defStyleAttr
|
||||
)
|
||||
|
||||
constructor(
|
||||
context: Context,
|
||||
attributeSet: AttributeSet,
|
||||
defStyleAttr: Int,
|
||||
defStyleRes: Int
|
||||
) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
companion object {
|
||||
private val TAG = StartAutopilotView::class.java.simpleName
|
||||
}
|
||||
|
||||
private var taxiPStartAutopilot: FrameAnimatorContainer? = null
|
||||
private var taxiPStartAutopilotCar: FrameAnimatorContainer? = null
|
||||
private var taxiPXiaozhiBelt: FrameAnimatorContainer? = null
|
||||
|
||||
|
||||
init {
|
||||
@@ -72,9 +57,7 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.taxt_u_p_start_autopilot_view, this, true)
|
||||
taxiPStartAutopilotCar = FrameAnimatorContainer(
|
||||
R.array.taxi_p_start_autopilot_car,
|
||||
20,
|
||||
taxi_p_autopilot_starting
|
||||
R.array.taxi_p_start_autopilot_car, 20, taxi_p_autopilot_starting
|
||||
)
|
||||
taxiPStartAutopilotCar?.setOnAnimStopListener(object :
|
||||
FrameAnimatorContainer.OnAnimationStoppedListener {
|
||||
@@ -83,10 +66,7 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
}
|
||||
})
|
||||
taxiPStartAutopilot = FrameAnimatorContainer(
|
||||
R.array.taxi_p_start_autopilot,
|
||||
15,
|
||||
taxi_p_autopilot_btn_bg,
|
||||
false
|
||||
R.array.taxi_p_start_autopilot, 15, taxi_p_autopilot_btn_bg, true
|
||||
)
|
||||
taxiPStartAutopilot?.setOnAnimStopListener(object :
|
||||
FrameAnimatorContainer.OnAnimationStoppedListener {
|
||||
@@ -94,13 +74,6 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "可以启动自驾动画暂停")
|
||||
}
|
||||
})
|
||||
taxiPXiaozhiBelt = FrameAnimatorContainer(R.array.xiaozhi_belt, 20, iv_xiaozhi_belt)
|
||||
taxiPXiaozhiBelt?.setOnAnimStopListener(object :
|
||||
FrameAnimatorContainer.OnAnimationStoppedListener {
|
||||
override fun AnimationStopped() {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "小智动画暂停")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun setOrderInfo(show: String) {
|
||||
@@ -155,18 +128,6 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
}
|
||||
}
|
||||
|
||||
override fun onVisibilityChanged(changedView: View, visibility: Int) {
|
||||
super.onVisibilityChanged(changedView, visibility)
|
||||
if (changedView != this) {
|
||||
return
|
||||
}
|
||||
if (HdMapBuildConfig.currentCarVrIconRes == R.raw.hq_h9) {
|
||||
cl_car_type.setBackgroundResource(R.drawable.taxt_u_p_start_panel__hq_bg)
|
||||
} else {
|
||||
cl_car_type.setBackgroundResource(R.drawable.taxt_u_p_start_panel__df_bg)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onAttachedToWindow")
|
||||
@@ -177,11 +138,6 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
startAutopiloting()
|
||||
viewModel.startAutopilot()
|
||||
}
|
||||
starting_autopilot_view_close.onClick {
|
||||
unableStartAutopilot()
|
||||
OverlayViewUtils.dismissOverlayView(this)
|
||||
}
|
||||
taxiPXiaozhiBelt?.start()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -235,7 +191,7 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
ableStartAutopilot()
|
||||
}
|
||||
|
||||
private fun goneAllDoorState(){
|
||||
private fun goneAllDoorState() {
|
||||
actv_front_left_door.visibility = GONE
|
||||
actv_front_right_door.visibility = GONE
|
||||
actv_rear_left_door.visibility = GONE
|
||||
@@ -245,7 +201,6 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
override fun onDetachedFromWindow() {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDetachedFromWindow")
|
||||
unableStartAutopilot()
|
||||
taxiPXiaozhiBelt?.stop()
|
||||
goneAllDoorState()
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.passenger.ui.startautopilot
|
||||
package com.mogo.och.taxi.passenger.ui.checkstartautopilot.startautopilot
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
@@ -54,10 +54,10 @@ class DebugView @JvmOverloads constructor(
|
||||
fragment?.showOrHideArrivedEndLayout(true)
|
||||
}
|
||||
tv_show_phone_check.onClick {
|
||||
fragment?.showOrHidePressengerCheckPager(isShow = true)
|
||||
fragment?.showOrHideCheckAndStartAutopilotView(0)
|
||||
}
|
||||
tv_show_start_autopilot.onClick {
|
||||
fragment?.showOrHideStartAutopilotView(true)
|
||||
fragment?.showOrHideCheckAndStartAutopilotView(1)
|
||||
}
|
||||
tv_show_order_info.onClick {
|
||||
fragment?.showOrHideServingOrderFragment(true)
|
||||
|
||||
@@ -1,88 +1,79 @@
|
||||
package com.mogo.och.taxi.passenger.ui.check
|
||||
package com.mogo.och.taxi.passenger.widget
|
||||
|
||||
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 android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
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.OverlayViewUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.FrameAnimatorContainer
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.ui.arrived.ArrivedView
|
||||
import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.iv_zhi_normal
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_passenger_count
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_passenger_end
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_passenger_start
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_back
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_eight
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_first
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_five
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_four
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_fourth
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_nine
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_one
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_second
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_seven
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_six
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_submit
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_third
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_three
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_two
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_passenger_check_panel.view.tv_taxi_passenger_number_zero
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_back
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_eight
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_first
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_five
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_four
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_fourth
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_nine
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_one
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_second
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_seven
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_six
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_submit
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_third
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_three
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_two
|
||||
import kotlinx.android.synthetic.main.taxt_u_p_check_number.view.tv_taxi_passenger_number_zero
|
||||
|
||||
/**
|
||||
* V2X预警事件view:通过FloatWindow呈现,无需加入到自定义layout中
|
||||
*
|
||||
* Created on 2022/3/16
|
||||
*/
|
||||
class TaxiPassengerCheckView : WindowRelativeLayout, View.OnClickListener,
|
||||
ChekViewModel.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)
|
||||
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)
|
||||
|
||||
private lateinit var viewModel:ChekViewModel
|
||||
private var taxiPxiaozhiCheck: FrameAnimatorContainer?=null
|
||||
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_u_p_passenger_check_panel, this, true)
|
||||
LayoutInflater.from(context).inflate(R.layout.taxt_u_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
|
||||
|
||||
taxiPxiaozhiCheck = FrameAnimatorContainer(R.array.xiaozhi_normal, 12,iv_zhi_normal)
|
||||
taxiPxiaozhiCheck?.setOnAnimStopListener(object : FrameAnimatorContainer.OnAnimationStoppedListener{
|
||||
override fun AnimationStopped() {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + ArrivedView.TAG, "动画暂停")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun keyBoardLogic() {
|
||||
@@ -135,19 +126,7 @@ class TaxiPassengerCheckView : WindowRelativeLayout, View.OnClickListener,
|
||||
VoiceNotice.showNotice("验证失败!再检查一下吧~", AIAssist.LEVEL2)
|
||||
return
|
||||
}
|
||||
viewModel.checkAndUpdateStatus(numberStr)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
viewModel = ViewModelProvider(this).get(ChekViewModel::class.java)
|
||||
viewModel.setStartAutopilotCallback(this)
|
||||
taxiPxiaozhiCheck?.start()
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
taxiPxiaozhiCheck?.stop()
|
||||
submitListener?.trySubmit(numberStr)
|
||||
}
|
||||
|
||||
private fun selectIndex(i: Int) {
|
||||
@@ -235,41 +214,9 @@ class TaxiPassengerCheckView : WindowRelativeLayout, View.OnClickListener,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "TaxiPassengerCheckView"
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView(context)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
override fun setOrderInfo(startSiteAddr: String?, endSiteAddr: String?, passengerNum: String?, phone: String?) {
|
||||
this.phone = phone?:""
|
||||
val sb = SpannableStringBuilder("乘客数:$passengerNum 位") // 包装字体内容
|
||||
sb.setSpan(
|
||||
TextAppearanceSpan("default",
|
||||
Typeface.NORMAL,100,
|
||||
ContextCompat.getColorStateList(context,R.color.taxi_p_check_passenger_number) ,null ),
|
||||
4, 5, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
|
||||
tv_passenger_count.text = sb
|
||||
tv_passenger_start.text = "起 点 : $startSiteAddr"
|
||||
tv_passenger_end.text = "终 点 : $endSiteAddr"
|
||||
for(i in numSelect.indices){
|
||||
numSelect[i] = null
|
||||
}
|
||||
numSelectTextView.forEach {
|
||||
it?.text = ""
|
||||
}
|
||||
}
|
||||
|
||||
override fun dismissWindow() {
|
||||
OverlayViewUtils.dismissOverlayView(this)
|
||||
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 |
|
Before Width: | Height: | Size: 670 KiB After Width: | Height: | Size: 139 KiB |
@@ -7,8 +7,8 @@
|
||||
android:layout_height="match_parent"
|
||||
tools:ignore="MissingDefaultResource">
|
||||
|
||||
<com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
|
||||
android:id="@+id/svp_frame"
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
@@ -148,25 +148,24 @@
|
||||
android:layout_height="@dimen/dp_160"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<com.mogo.och.taxi.passenger.ui.debug.DebugView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_120"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.och.taxi.passenger.ui.arrived.ArrivedView
|
||||
android:id="@+id/arrivedView"
|
||||
android:visibility="gone"
|
||||
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"
|
||||
android:layout_height="@dimen/dp_360"
|
||||
android:layout_marginBottom="@dimen/dp_m_30"
|
||||
android:layout_marginEnd="@dimen/dp_60"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
@@ -179,4 +178,12 @@
|
||||
android:layout_marginBottom="-80dp"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.mogo.och.taxi.passenger.ui.debug.DebugView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -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"
|
||||
android: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"
|
||||
android:text="起 点 : 衡山科学城" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_passenger_start_boll"
|
||||
android:layout_width="@dimen/dp_17"
|
||||
android:layout_height="@dimen/dp_17"
|
||||
android:src="@drawable/taxt_u_p_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/taxt_u_p_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/taxt_u_p_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"
|
||||
android: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>
|
||||
@@ -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_u_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_check_keyboard_samll_mogo_color"
|
||||
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/tv_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/taxt_u_p_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>
|
||||
@@ -5,7 +5,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/cl_car_type"
|
||||
android:background="@drawable/taxt_u_p_start_panel__df_bg"
|
||||
tools:ignore="MissingDefaultResource">
|
||||
|
||||
<ImageView
|
||||
@@ -20,16 +19,6 @@
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/starting_autopilot_view_close"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:src="@drawable/taxt_u_p_arrived_close"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginTop="@dimen/dp_50"
|
||||
android:layout_width="@dimen/dp_120"
|
||||
android:layout_height="@dimen/dp_120"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/taxi_p_autopilot_btn_bg"
|
||||
android:layout_width="1000dp"
|
||||
@@ -71,85 +60,11 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_59"
|
||||
tools:text="用户:1234882382 目的地:环球贸易中心"
|
||||
android:textColor="@android:color/white"
|
||||
android:textColor="@color/taxi_p_333333"
|
||||
android:textSize="@dimen/dp_44"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/v_xiaozhi_belt_info_bg"
|
||||
app:layout_constraintBottom_toTopOf="@+id/iv_xiaozhi_belt"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:background="@drawable/taxt_u_p_xiaozhibelt_info"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:layout_width="@dimen/dp_600"
|
||||
android:layout_height="@dimen/dp_339"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
app:layout_constraintStart_toStartOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
app:layout_constraintEnd_toEndOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
app:layout_constraintTop_toTopOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
android:layout_marginTop="@dimen/dp_52"
|
||||
android:text="一切准备就绪,再开启行程吧!"
|
||||
android:textSize="@dimen/dp_38"
|
||||
android:textColor="@android:color/white"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/v_xiaozhi_belt_ball_01"
|
||||
app:layout_constraintTop_toTopOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
android:layout_marginTop="@dimen/dp_165"
|
||||
android:layout_marginStart="@dimen/dp_81"
|
||||
android:background="@drawable/taxt_u_p_xiaozhibelt_info_ball"
|
||||
android:layout_width="@dimen/dp_16"
|
||||
android:layout_height="@dimen/dp_16"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
app:layout_constraintTop_toTopOf="@+id/v_xiaozhi_belt_ball_01"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/v_xiaozhi_belt_ball_01"
|
||||
app:layout_constraintStart_toEndOf="@+id/v_xiaozhi_belt_ball_01"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:text="关闭车门"
|
||||
android:textColor="@color/taxi_p_80F8FF"
|
||||
android:textSize="@dimen/dp_44"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/v_xiaozhi_belt_ball_02"
|
||||
app:layout_constraintTop_toTopOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/v_xiaozhi_belt_info_bg"
|
||||
android:layout_marginTop="@dimen/dp_243"
|
||||
android:layout_marginStart="@dimen/dp_81"
|
||||
android:background="@drawable/taxt_u_p_xiaozhibelt_info_ball"
|
||||
android:layout_width="@dimen/dp_16"
|
||||
android:layout_height="@dimen/dp_16"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
app:layout_constraintTop_toTopOf="@+id/v_xiaozhi_belt_ball_02"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/v_xiaozhi_belt_ball_02"
|
||||
app:layout_constraintStart_toEndOf="@+id/v_xiaozhi_belt_ball_01"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:text="佩戴安全带"
|
||||
android:textColor="@color/taxi_p_80F8FF"
|
||||
android:textSize="@dimen/dp_44"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_xiaozhi_belt"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:src="@drawable/xiaozhi_belt_000"
|
||||
android:layout_width="@dimen/dp_360"
|
||||
android:layout_height="@dimen/dp_360"
|
||||
android:layout_marginBottom="@dimen/dp_m_30"/>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/gl_vertical_center"
|
||||
android:orientation="vertical"
|
||||
|
||||
@@ -225,4 +225,100 @@
|
||||
<item>@drawable/xiaozhi_belt_048</item>
|
||||
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="arrived_dest">
|
||||
<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>
|
||||
</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>
|
||||
@@ -45,9 +45,13 @@
|
||||
<color name="taxi_p_76D7FF">#76D7FF</color>
|
||||
<color name="taxi_p_255BAA">#255BAA</color>
|
||||
<color name="taxi_p_80F8FF">#80F8FF</color>
|
||||
<color name="taxi_p_464646">#464646</color>
|
||||
<color name="taxi_p_378EFB">#378EFB</color>
|
||||
<color name="taxi_p_191E3C">#191E3C</color>
|
||||
<color name="taxi_p_2B364B">#2B364B</color>
|
||||
<color name="taxi_p_005D6A8C">#005D6A8C</color>
|
||||
<color name="taxi_p_5D6A8C">#5D6A8C</color>
|
||||
<color name="taxi_p_333333">#333333</color>
|
||||
<color name="taxi_p_995D6A8C">#995D6A8C</color>
|
||||
<color name="taxi_p_B37E90BF">#B37E90BF</color>
|
||||
|
||||
|
||||