[3.4.0]
[帧动画优化]
@@ -19,10 +19,11 @@ import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback
|
||||
import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter
|
||||
import com.mogo.och.taxi.passenger.ui.bottom.BottomBar
|
||||
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.startautopilot.StartAutopilotView
|
||||
import com.mogo.och.taxi.passenger.widget.animutils.AnimationsContainer
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.*
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
@@ -53,6 +54,8 @@ class TaxiPassengerBaseFragment() :
|
||||
*/
|
||||
private var mStartAutopilotView: WeakReference<StartAutopilotView?>? = null
|
||||
|
||||
private var createProgressDialogAnim: AnimationsContainer?=null
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.taxi_p_base_fragment
|
||||
}
|
||||
@@ -70,6 +73,13 @@ class TaxiPassengerBaseFragment() :
|
||||
mapBizView!!.onCreate(savedInstanceState)
|
||||
overMapView.onCreateView(savedInstanceState)
|
||||
overMapView.hideResetView()
|
||||
|
||||
createProgressDialogAnim = AnimationsContainer(R.array.xiaozhi_normal, 20,aciv_xiaozhi_normal)
|
||||
createProgressDialogAnim?.setOnAnimStopListener(object :AnimationsContainer.OnAnimationStoppedListener{
|
||||
override fun AnimationStopped() {
|
||||
CallerLogger.d(M_TAXI_P + TAG, "动画暂停")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
@@ -147,6 +157,15 @@ class TaxiPassengerBaseFragment() :
|
||||
}
|
||||
|
||||
}
|
||||
view?.viewTreeObserver?.addOnWindowFocusChangeListener {
|
||||
if(it){
|
||||
CallerLogger.d(M_TAXI_P + TAG, "windows获取焦点")
|
||||
createProgressDialogAnim?.start()
|
||||
}else{
|
||||
CallerLogger.d(M_TAXI_P + TAG, "window失去焦点")
|
||||
createProgressDialogAnim?.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initCheckView() {
|
||||
@@ -163,10 +182,7 @@ class TaxiPassengerBaseFragment() :
|
||||
overMapView.onResume()
|
||||
CallerLogger.d(M_TAXI_P + TAG, "onResume")
|
||||
|
||||
if (aciv_xiaozhi_normal.drawable is AnimationDrawable) {
|
||||
val anim = aciv_xiaozhi_normal.drawable as AnimationDrawable
|
||||
anim.start()
|
||||
}
|
||||
createProgressDialogAnim?.start()
|
||||
}
|
||||
|
||||
override fun createPresenter(): BaseTaxiPassengerPresenter {
|
||||
@@ -188,10 +204,7 @@ class TaxiPassengerBaseFragment() :
|
||||
mapBizView!!.onPause()
|
||||
overMapView?.onPause()
|
||||
CallerLogger.d(M_TAXI_P + TAG, "onPause")
|
||||
if (aciv_xiaozhi_normal.drawable is AnimationDrawable) {
|
||||
val anim = aciv_xiaozhi_normal.drawable as AnimationDrawable
|
||||
anim.stop()
|
||||
}
|
||||
createProgressDialogAnim?.stop()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
||||
@@ -6,19 +6,25 @@ import android.view.LayoutInflater
|
||||
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
|
||||
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.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment
|
||||
import com.mogo.och.taxi.passenger.ui.startautopilot.StartAutopilotView
|
||||
import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
|
||||
import com.mogo.och.taxi.passenger.widget.animutils.AnimationsContainer
|
||||
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.taxi_p_arrived_end_panel.view.aciv_close
|
||||
import kotlinx.android.synthetic.main.taxi_p_arrived_end_panel.view.actv_endstation
|
||||
import kotlinx.android.synthetic.main.taxi_p_arrived_end_panel.view.iv_xiaozhi_belt
|
||||
import kotlinx.android.synthetic.main.taxi_p_arrived_end_panel.view.svp_frame
|
||||
import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.taxi_p_autopilot_starting
|
||||
|
||||
|
||||
/**
|
||||
@@ -40,6 +46,8 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
|
||||
|
||||
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
|
||||
|
||||
private var taxiPxiaozhiLove: AnimationsContainer?=null
|
||||
|
||||
private fun initView() {
|
||||
d(SceneConstant.M_TAXI_P + TAG, "initView")
|
||||
LayoutInflater.from(context).inflate(R.layout.taxi_p_arrived_end_panel, this, true)
|
||||
@@ -58,12 +66,20 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
|
||||
aciv_close.onClick {
|
||||
OverlayViewUtils.dismissOverlayView(this)
|
||||
}
|
||||
|
||||
taxiPxiaozhiLove = AnimationsContainer(R.array.xiaozhi_love, 20,iv_xiaozhi_belt)
|
||||
taxiPxiaozhiLove?.setOnAnimStopListener(object :AnimationsContainer.OnAnimationStoppedListener{
|
||||
override fun AnimationStopped() {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "动画暂停")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
val viewModel = ViewModelProvider(this).get(ArrivedViewModel::class.java)
|
||||
viewModel.setViewCallback(this)
|
||||
taxiPxiaozhiLove?.start()
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
@@ -71,6 +87,7 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
|
||||
svp_frame.setVideoAllCallBack(null)
|
||||
svp_frame.onVideoReset()
|
||||
svp_frame.release()
|
||||
taxiPxiaozhiLove?.stop()
|
||||
|
||||
super.onDetachedFromWindow()
|
||||
subscribe?.let {
|
||||
|
||||
@@ -8,11 +8,16 @@ import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
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.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.AnimatorDrawableUtil
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment
|
||||
import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
|
||||
import com.mogo.och.taxi.passenger.widget.animutils.AnimationsContainer
|
||||
import kotlinx.android.synthetic.main.taxi_p_base_fragment.aciv_xiaozhi_normal
|
||||
import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.actv_front_left_door
|
||||
import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.actv_front_right_door
|
||||
import kotlinx.android.synthetic.main.taxi_p_start_autopilot_view.view.actv_orderinfo
|
||||
@@ -45,24 +50,10 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
}
|
||||
|
||||
var isStarting = false
|
||||
private var mAnimationDrawable: AnimatorDrawableUtil? = null
|
||||
private var mCarAnimationDrawable: AnimatorDrawableUtil? = null
|
||||
private val startingAnimIds = arrayOf(R.drawable.light_00000, R.drawable.light_00001,
|
||||
R.drawable.light_00002, R.drawable.light_00003, R.drawable.light_00004, R.drawable.light_00005,
|
||||
R.drawable.light_00006, R.drawable.light_00007, R.drawable.light_00008, R.drawable.light_00009,
|
||||
R.drawable.light_00010, R.drawable.light_00011, R.drawable.light_00012, R.drawable.light_00013
|
||||
)
|
||||
private val startBtnBgAnimIds = arrayOf(R.drawable.image_00000, R.drawable.image_00001,
|
||||
R.drawable.image_00002, R.drawable.image_00003, R.drawable.image_00004, R.drawable.image_00005,
|
||||
R.drawable.image_00006, R.drawable.image_00007, R.drawable.image_00008, R.drawable.image_00009,
|
||||
R.drawable.image_00010, R.drawable.image_00011, R.drawable.image_00012, R.drawable.image_00013,
|
||||
R.drawable.image_00014, R.drawable.image_00015, R.drawable.image_00016, R.drawable.image_00017,
|
||||
R.drawable.image_00018, R.drawable.image_00019, R.drawable.image_00020, R.drawable.image_00021,
|
||||
R.drawable.image_00022, R.drawable.image_00023, R.drawable.image_00024, R.drawable.image_00025,
|
||||
R.drawable.image_00026, R.drawable.image_00027, R.drawable.image_00028, R.drawable.image_00029,
|
||||
R.drawable.image_00030, R.drawable.image_00031, R.drawable.image_00032, R.drawable.image_00033,
|
||||
R.drawable.image_00034
|
||||
)
|
||||
|
||||
private var taxiPStartAutopilot: AnimationsContainer?=null
|
||||
private var taxiPStartAutopilotCar: AnimationsContainer?=null
|
||||
|
||||
|
||||
init {
|
||||
initView()
|
||||
@@ -70,18 +61,25 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.taxi_p_start_autopilot_view, this, true)
|
||||
taxiPStartAutopilotCar = AnimationsContainer(R.array.taxi_p_start_autopilot_car, 20,taxi_p_autopilot_starting)
|
||||
taxiPStartAutopilotCar?.setOnAnimStopListener(object :AnimationsContainer.OnAnimationStoppedListener{
|
||||
override fun AnimationStopped() {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "动画暂停")
|
||||
}
|
||||
})
|
||||
taxiPStartAutopilot = AnimationsContainer(R.array.taxi_p_start_autopilot, 20,taxi_p_autopilot_btn_bg)
|
||||
taxiPStartAutopilot?.setOnAnimStopListener(object :AnimationsContainer.OnAnimationStoppedListener{
|
||||
override fun AnimationStopped() {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "动画暂停")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun startAutopilotBgAnimatorDrawable(isStart: Boolean) {
|
||||
if (isStart) {
|
||||
if (mAnimationDrawable == null) {
|
||||
initBtnAnimatonDrawable()
|
||||
}
|
||||
if (mAnimationDrawable != null) {
|
||||
mAnimationDrawable!!.start(true, 30, null)
|
||||
}
|
||||
taxiPStartAutopilot?.start()
|
||||
} else {
|
||||
clearBgAnimDrawable()
|
||||
taxiPStartAutopilot?.stop()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,29 +159,14 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
}
|
||||
}
|
||||
|
||||
private fun initCarStartingFrame() {
|
||||
mCarAnimationDrawable = AnimatorDrawableUtil()
|
||||
mCarAnimationDrawable?.setAnimation(taxi_p_autopilot_starting, Arrays.asList(*startingAnimIds))
|
||||
}
|
||||
|
||||
private fun initBtnAnimatonDrawable() {
|
||||
mAnimationDrawable = AnimatorDrawableUtil()
|
||||
mAnimationDrawable?.setAnimation(taxi_p_autopilot_btn_bg, Arrays.asList(*startBtnBgAnimIds))
|
||||
}
|
||||
|
||||
|
||||
|
||||
private fun startingCarBgAnimatorDrawable(isStart: Boolean) {
|
||||
if (isStart) {
|
||||
if (mCarAnimationDrawable == null) {
|
||||
initCarStartingFrame()
|
||||
}
|
||||
taxi_p_autopilot_starting!!.setImageResource(0)
|
||||
mCarAnimationDrawable!!.start(true, 40, null)
|
||||
taxiPStartAutopilotCar?.start()
|
||||
} else {
|
||||
if (mCarAnimationDrawable != null) {
|
||||
mCarAnimationDrawable!!.stop()
|
||||
}
|
||||
taxiPStartAutopilotCar?.stop()
|
||||
taxi_p_autopilot_starting!!.setImageResource(R.drawable.light_00003)
|
||||
}
|
||||
}
|
||||
@@ -203,17 +186,11 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
|
||||
}
|
||||
|
||||
private fun clearBgAnimDrawable() {
|
||||
if (mAnimationDrawable != null) {
|
||||
mAnimationDrawable!!.stop()
|
||||
mAnimationDrawable = null
|
||||
}
|
||||
taxiPStartAutopilot?.stop()
|
||||
}
|
||||
|
||||
fun clearStartingAnimFrame() {
|
||||
if (mCarAnimationDrawable != null) {
|
||||
mCarAnimationDrawable!!.stop()
|
||||
mCarAnimationDrawable = null
|
||||
}
|
||||
taxiPStartAutopilotCar?.stop()
|
||||
}
|
||||
|
||||
private fun startingAutopilotCountDown() {
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
package com.mogo.och.taxi.passenger.widget.animutils
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.ImageView
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import java.lang.ref.SoftReference
|
||||
|
||||
class AnimationsContainer(resId: Int, fps: Int, imageView: ImageView) {
|
||||
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//播放停止监听
|
||||
private var mBitmap: Bitmap? = null
|
||||
private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题
|
||||
|
||||
init {
|
||||
createAnimation(imageView, getData(resId), fps)
|
||||
}
|
||||
|
||||
private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int) {
|
||||
mHandler = Handler(Looper.myLooper()!!)
|
||||
mFrames = frames
|
||||
mIndex = -1
|
||||
mSoftReferenceImageView = SoftReference(imageView)
|
||||
mShouldRun = false
|
||||
mIsRunning = false
|
||||
mDelayMillis = 1000 / fps //帧动画时间间隔,毫秒
|
||||
imageView.setImageResource(mFrames[0])
|
||||
|
||||
// 当图片大小类型相同时进行复用,避免频繁GC
|
||||
val bmp = (imageView.drawable as BitmapDrawable).bitmap
|
||||
val width = bmp.width
|
||||
val height = bmp.height
|
||||
val config = bmp.config
|
||||
mBitmap = Bitmap.createBitmap(width, height, config)
|
||||
mBitmapOptions = BitmapFactory.Options()
|
||||
//设置Bitmap内存复用
|
||||
mBitmapOptions!!.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收
|
||||
mBitmapOptions!!.inMutable = true //解码时返回可变Bitmap
|
||||
mBitmapOptions!!.inSampleSize = 1 //缩放比例
|
||||
}
|
||||
|
||||
//循环读取下一帧
|
||||
private val next: Int
|
||||
get() {
|
||||
mIndex++
|
||||
if (mIndex >= mFrames.size) mIndex = 0
|
||||
return mFrames[mIndex]
|
||||
}
|
||||
|
||||
/**
|
||||
* 播放动画,同步锁防止多线程读帧时,数据安全问题
|
||||
*/
|
||||
@Synchronized
|
||||
fun start() {
|
||||
mShouldRun = true
|
||||
if (mIsRunning) return
|
||||
val runnable: Runnable = object : Runnable {
|
||||
override fun run() {
|
||||
val imageView = mSoftReferenceImageView!!.get()
|
||||
if (!mShouldRun || imageView == null) {
|
||||
mIsRunning = false
|
||||
if (mOnAnimationStoppedListener != null) {
|
||||
mOnAnimationStoppedListener!!.AnimationStopped()
|
||||
}
|
||||
return
|
||||
}
|
||||
mIsRunning = true
|
||||
//新开线程去读下一帧
|
||||
mHandler!!.postDelayed(this, mDelayMillis.toLong())
|
||||
if (imageView.isShown) {
|
||||
val imageRes: Int = next
|
||||
if (mBitmap != null) { // so Build.VERSION.SDK_INT >= 11
|
||||
var bitmap: Bitmap? = null
|
||||
try {
|
||||
bitmap = BitmapFactory.decodeResource(
|
||||
imageView.resources,
|
||||
imageRes,
|
||||
mBitmapOptions
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
if (bitmap != null) {
|
||||
imageView.setImageBitmap(bitmap)
|
||||
} else {
|
||||
imageView.setImageResource(imageRes)
|
||||
mBitmap!!.recycle()
|
||||
mBitmap = null
|
||||
}
|
||||
} else {
|
||||
imageView.setImageResource(imageRes)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mHandler!!.post(runnable)
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止播放
|
||||
*/
|
||||
@Synchronized
|
||||
fun stop() {
|
||||
mShouldRun = false
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置停止播放监听
|
||||
* @param listener 设置监听
|
||||
*/
|
||||
fun setOnAnimStopListener(listener: OnAnimationStoppedListener?) {
|
||||
mOnAnimationStoppedListener = listener
|
||||
}
|
||||
|
||||
/**
|
||||
* 从xml中读取帧数组
|
||||
* @param resId
|
||||
* @return
|
||||
*/
|
||||
private 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
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止播放监听
|
||||
*/
|
||||
interface OnAnimationStoppedListener {
|
||||
fun AnimationStopped()
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_000.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_001.png
Executable file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_002.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_003.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_004.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_005.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_006.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_007.png
Executable file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_008.png
Executable file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_009.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_010.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_011.png
Executable file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_012.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_013.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_014.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_015.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_016.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_017.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_018.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_019.png
Executable file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_020.png
Executable file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_021.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_022.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_023.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_024.png
Executable file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_025.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_026.png
Executable file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_027.png
Executable file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_028.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_029.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_030.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_031.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_032.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_033.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_034.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_035.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_036.png
Executable file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_037.png
Executable file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_038.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_039.png
Executable file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_040.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_041.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_042.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_043.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_044.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_045.png
Executable file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_046.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_047.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_048.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_049.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_050.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_051.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_052.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_053.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_054.png
Executable file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_055.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_056.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_057.png
Executable file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_058.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
OCH/mogo-och-taxi-passenger/src/main/res/drawable/xiaozhi_love_059.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
@@ -59,6 +59,13 @@
|
||||
android:layout_width="@dimen/dp_900"
|
||||
android:layout_height="@dimen/dp_506"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:src="@drawable/taxi_p_arrived_glide"
|
||||
app:layout_constraintStart_toStartOf="@+id/v_video_right_rear"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/v_video_right_rear"
|
||||
android:layout_width="@dimen/dp_318"
|
||||
android:layout_height="@dimen/dp_77"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
app:layout_constraintStart_toStartOf="@+id/v_video_right_rear"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/v_video_right_rear"
|
||||
@@ -77,7 +84,7 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:background="@drawable/taxi_p_xiaozhibelt_info"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
android:layout_marginBottom="-60dp"
|
||||
android:layout_width="@dimen/dp_600"
|
||||
android:layout_height="@dimen/dp_339"/>
|
||||
|
||||
@@ -109,11 +116,10 @@
|
||||
android:id="@+id/iv_xiaozhi_belt"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginEnd="@dimen/dp_98"
|
||||
android:src="@drawable/xiaozhi_normal002"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
android:layout_width="@dimen/dp_216"
|
||||
android:layout_height="@dimen/dp_216"/>
|
||||
android:layout_marginEnd="@dimen/dp_46"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:layout_width="@dimen/dp_300"
|
||||
android:layout_height="@dimen/dp_300"/>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
189
OCH/mogo-och-taxi-passenger/src/main/res/values/arrays.xml
Normal file
@@ -0,0 +1,189 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="xiaozhi_normal">
|
||||
<item>@drawable/xiaozhi_normal002</item>
|
||||
<item>@drawable/xiaozhi_normal004</item>
|
||||
<item>@drawable/xiaozhi_normal006</item>
|
||||
<item>@drawable/xiaozhi_normal008</item>
|
||||
<item>@drawable/xiaozhi_normal010</item>
|
||||
<item>@drawable/xiaozhi_normal012</item>
|
||||
<item>@drawable/xiaozhi_normal014</item>
|
||||
<item>@drawable/xiaozhi_normal016</item>
|
||||
<item>@drawable/xiaozhi_normal018</item>
|
||||
<item>@drawable/xiaozhi_normal020</item>
|
||||
<item>@drawable/xiaozhi_normal022</item>
|
||||
<item>@drawable/xiaozhi_normal024</item>
|
||||
<item>@drawable/xiaozhi_normal026</item>
|
||||
<item>@drawable/xiaozhi_normal028</item>
|
||||
<item>@drawable/xiaozhi_normal030</item>
|
||||
<item>@drawable/xiaozhi_normal032</item>
|
||||
<item>@drawable/xiaozhi_normal034</item>
|
||||
<item>@drawable/xiaozhi_normal036</item>
|
||||
<item>@drawable/xiaozhi_normal038</item>
|
||||
<item>@drawable/xiaozhi_normal040</item>
|
||||
<item>@drawable/xiaozhi_normal042</item>
|
||||
<item>@drawable/xiaozhi_normal044</item>
|
||||
<item>@drawable/xiaozhi_normal046</item>
|
||||
<item>@drawable/xiaozhi_normal048</item>
|
||||
<item>@drawable/xiaozhi_normal050</item>
|
||||
<item>@drawable/xiaozhi_normal052</item>
|
||||
<item>@drawable/xiaozhi_normal054</item>
|
||||
<item>@drawable/xiaozhi_normal056</item>
|
||||
<item>@drawable/xiaozhi_normal058</item>
|
||||
<item>@drawable/xiaozhi_normal060</item>
|
||||
<item>@drawable/xiaozhi_normal062</item>
|
||||
<item>@drawable/xiaozhi_normal064</item>
|
||||
<item>@drawable/xiaozhi_normal066</item>
|
||||
<item>@drawable/xiaozhi_normal068</item>
|
||||
<item>@drawable/xiaozhi_normal070</item>
|
||||
<item>@drawable/xiaozhi_normal072</item>
|
||||
<item>@drawable/xiaozhi_normal074</item>
|
||||
<item>@drawable/xiaozhi_normal076</item>
|
||||
<item>@drawable/xiaozhi_normal078</item>
|
||||
<item>@drawable/xiaozhi_normal080</item>
|
||||
<item>@drawable/xiaozhi_normal082</item>
|
||||
<item>@drawable/xiaozhi_normal084</item>
|
||||
<item>@drawable/xiaozhi_normal086</item>
|
||||
<item>@drawable/xiaozhi_normal088</item>
|
||||
<item>@drawable/xiaozhi_normal090</item>
|
||||
<item>@drawable/xiaozhi_normal092</item>
|
||||
<item>@drawable/xiaozhi_normal094</item>
|
||||
<item>@drawable/xiaozhi_normal096</item>
|
||||
<item>@drawable/xiaozhi_normal098</item>
|
||||
<item>@drawable/xiaozhi_normal100</item>
|
||||
<item>@drawable/xiaozhi_normal102</item>
|
||||
<item>@drawable/xiaozhi_normal104</item>
|
||||
<item>@drawable/xiaozhi_normal106</item>
|
||||
<item>@drawable/xiaozhi_normal108</item>
|
||||
<item>@drawable/xiaozhi_normal110</item>
|
||||
<item>@drawable/xiaozhi_normal112</item>
|
||||
<item>@drawable/xiaozhi_normal114</item>
|
||||
<item>@drawable/xiaozhi_normal116</item>
|
||||
<item>@drawable/xiaozhi_normal118</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="taxi_p_start_autopilot">
|
||||
<item>@drawable/image_00000</item>
|
||||
<item>@drawable/image_00001</item>
|
||||
<item>@drawable/image_00002</item>
|
||||
<item>@drawable/image_00003</item>
|
||||
<item>@drawable/image_00004</item>
|
||||
<item>@drawable/image_00005</item>
|
||||
<item>@drawable/image_00006</item>
|
||||
<item>@drawable/image_00007</item>
|
||||
<item>@drawable/image_00008</item>
|
||||
<item>@drawable/image_00009</item>
|
||||
<item>@drawable/image_00010</item>
|
||||
<item>@drawable/image_00011</item>
|
||||
<item>@drawable/image_00012</item>
|
||||
<item>@drawable/image_00013</item>
|
||||
<item>@drawable/image_00014</item>
|
||||
<item>@drawable/image_00015</item>
|
||||
<item>@drawable/image_00016</item>
|
||||
<item>@drawable/image_00017</item>
|
||||
<item>@drawable/image_00018</item>
|
||||
<item>@drawable/image_00019</item>
|
||||
<item>@drawable/image_00020</item>
|
||||
<item>@drawable/image_00021</item>
|
||||
<item>@drawable/image_00022</item>
|
||||
<item>@drawable/image_00023</item>
|
||||
<item>@drawable/image_00024</item>
|
||||
<item>@drawable/image_00025</item>
|
||||
<item>@drawable/image_00026</item>
|
||||
<item>@drawable/image_00027</item>
|
||||
<item>@drawable/image_00028</item>
|
||||
<item>@drawable/image_00029</item>
|
||||
<item>@drawable/image_00030</item>
|
||||
<item>@drawable/image_00031</item>
|
||||
<item>@drawable/image_00032</item>
|
||||
<item>@drawable/image_00033</item>
|
||||
<item>@drawable/image_00034</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="taxi_p_start_autopilot_car">
|
||||
<item>@drawable/light_00000</item>
|
||||
<item>@drawable/light_00001</item>
|
||||
<item>@drawable/light_00002</item>
|
||||
<item>@drawable/light_00003</item>
|
||||
<item>@drawable/light_00004</item>
|
||||
<item>@drawable/light_00005</item>
|
||||
<item>@drawable/light_00006</item>
|
||||
<item>@drawable/light_00007</item>
|
||||
<item>@drawable/light_00008</item>
|
||||
<item>@drawable/light_00009</item>
|
||||
<item>@drawable/light_00010</item>
|
||||
<item>@drawable/light_00011</item>
|
||||
<item>@drawable/light_00012</item>
|
||||
<item>@drawable/light_00013</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="xiaozhi_love">
|
||||
<item>@drawable/xiaozhi_love_000</item>
|
||||
<item>@drawable/xiaozhi_love_001</item>
|
||||
<item>@drawable/xiaozhi_love_002</item>
|
||||
<item>@drawable/xiaozhi_love_003</item>
|
||||
<item>@drawable/xiaozhi_love_004</item>
|
||||
<item>@drawable/xiaozhi_love_005</item>
|
||||
<item>@drawable/xiaozhi_love_006</item>
|
||||
<item>@drawable/xiaozhi_love_007</item>
|
||||
<item>@drawable/xiaozhi_love_008</item>
|
||||
<item>@drawable/xiaozhi_love_009</item>
|
||||
|
||||
<item>@drawable/xiaozhi_love_010</item>
|
||||
<item>@drawable/xiaozhi_love_011</item>
|
||||
<item>@drawable/xiaozhi_love_012</item>
|
||||
<item>@drawable/xiaozhi_love_013</item>
|
||||
<item>@drawable/xiaozhi_love_014</item>
|
||||
<item>@drawable/xiaozhi_love_015</item>
|
||||
<item>@drawable/xiaozhi_love_016</item>
|
||||
<item>@drawable/xiaozhi_love_017</item>
|
||||
<item>@drawable/xiaozhi_love_018</item>
|
||||
<item>@drawable/xiaozhi_love_019</item>
|
||||
|
||||
<item>@drawable/xiaozhi_love_020</item>
|
||||
<item>@drawable/xiaozhi_love_021</item>
|
||||
<item>@drawable/xiaozhi_love_022</item>
|
||||
<item>@drawable/xiaozhi_love_023</item>
|
||||
<item>@drawable/xiaozhi_love_024</item>
|
||||
<item>@drawable/xiaozhi_love_025</item>
|
||||
<item>@drawable/xiaozhi_love_026</item>
|
||||
<item>@drawable/xiaozhi_love_027</item>
|
||||
<item>@drawable/xiaozhi_love_028</item>
|
||||
<item>@drawable/xiaozhi_love_029</item>
|
||||
|
||||
|
||||
<item>@drawable/xiaozhi_love_030</item>
|
||||
<item>@drawable/xiaozhi_love_031</item>
|
||||
<item>@drawable/xiaozhi_love_032</item>
|
||||
<item>@drawable/xiaozhi_love_033</item>
|
||||
<item>@drawable/xiaozhi_love_034</item>
|
||||
<item>@drawable/xiaozhi_love_035</item>
|
||||
<item>@drawable/xiaozhi_love_036</item>
|
||||
<item>@drawable/xiaozhi_love_037</item>
|
||||
<item>@drawable/xiaozhi_love_038</item>
|
||||
<item>@drawable/xiaozhi_love_039</item>
|
||||
|
||||
<item>@drawable/xiaozhi_love_040</item>
|
||||
<item>@drawable/xiaozhi_love_041</item>
|
||||
<item>@drawable/xiaozhi_love_042</item>
|
||||
<item>@drawable/xiaozhi_love_043</item>
|
||||
<item>@drawable/xiaozhi_love_044</item>
|
||||
<item>@drawable/xiaozhi_love_045</item>
|
||||
<item>@drawable/xiaozhi_love_046</item>
|
||||
<item>@drawable/xiaozhi_love_047</item>
|
||||
<item>@drawable/xiaozhi_love_048</item>
|
||||
<item>@drawable/xiaozhi_love_049</item>
|
||||
|
||||
|
||||
<item>@drawable/xiaozhi_love_050</item>
|
||||
<item>@drawable/xiaozhi_love_051</item>
|
||||
<item>@drawable/xiaozhi_love_052</item>
|
||||
<item>@drawable/xiaozhi_love_053</item>
|
||||
<item>@drawable/xiaozhi_love_054</item>
|
||||
<item>@drawable/xiaozhi_love_055</item>
|
||||
<item>@drawable/xiaozhi_love_056</item>
|
||||
<item>@drawable/xiaozhi_love_057</item>
|
||||
<item>@drawable/xiaozhi_love_058</item>
|
||||
<item>@drawable/xiaozhi_love_059</item>
|
||||
</string-array>
|
||||
</resources>
|
||||