[taxi-u-p]
[动画修改]
This commit is contained in:
yangyakun
2023-12-23 00:04:22 +08:00
parent 39a1d730e2
commit cd40d2ced3
47 changed files with 376 additions and 72 deletions

View File

@@ -29,7 +29,7 @@ class BigFrameAnimatorContainer (resId: Int,
private var mSoftReferenceImageView: SoftReference<ImageView>? = null // 软引用ImageView以便及时释放掉 private var mSoftReferenceImageView: SoftReference<ImageView>? = null // 软引用ImageView以便及时释放掉
private var mHandler: Handler? = null private var mHandler: Handler? = null
private var mDelayMillis = 0 private var mDelayMillis = 0
private var mOnAnimationStoppedListener: OnAnimationStoppedListener? = null//播放停止监听 var mOnAnimationStoppedListener: OnAnimationStoppedListener? = null//播放停止监听
var isOnce:Boolean = false var isOnce:Boolean = false
private val readQueue = ArrayBlockingQueue<Pair<Bitmap,BitmapFactory.Options>>(8,true) private val readQueue = ArrayBlockingQueue<Pair<Bitmap,BitmapFactory.Options>>(8,true)

View File

@@ -1,5 +1,10 @@
package com.mogo.och.taxi.passenger.ui package com.mogo.och.taxi.passenger.ui
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
@@ -20,7 +25,9 @@ import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter
import com.mogo.och.taxi.passenger.ui.arrived.ArrivedView
import com.mogo.och.taxi.passenger.ui.bottom.BottomBar import com.mogo.och.taxi.passenger.ui.bottom.BottomBar
import com.mogo.och.taxi.passenger.ui.checkstartautopilot.ChekAndStartAutopilotView
import com.mogo.och.taxi.passenger.ui.statusview.StatusBarView import com.mogo.och.taxi.passenger.ui.statusview.StatusBarView
import io.reactivex.disposables.Disposable 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.arrivedView
@@ -36,6 +43,7 @@ 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.romaDistanceView
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.romaPView 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 kotlinx.android.synthetic.main.taxt_u_p_base_fragment.rv_location_center
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.speedView
/** /**
* 网约车基础Fragment主要负责布局通用界面处理站点面板和通话面板互斥情况 * 网约车基础Fragment主要负责布局通用界面处理站点面板和通话面板互斥情况
@@ -169,6 +177,22 @@ class TaxiPassengerBaseFragment() :
} }
} }
arrivedView.arrivedVisilityChangeListenr = object :ArrivedView.ArrivedVisilityChangeListenr{
override fun isShow(show: Boolean) {
CallerLogger.d(M_TAXI_P + TAG, "arrived ${show}")
if(arrivedView.visibility==View.GONE&&chekAndStartAutopilotView.visibility==View.GONE){
showOrHide(true)
}
}
}
chekAndStartAutopilotView.checkAndStartVisilityChangeListenr = object :ChekAndStartAutopilotView.CheckAndStartVisilityChangeListenr{
override fun isShow(show: Boolean) {
CallerLogger.d(M_TAXI_P + TAG, "check and startAutopilot ${show}")
if(arrivedView.visibility==View.GONE&&chekAndStartAutopilotView.visibility==View.GONE){
showOrHide(true)
}
}
}
view?.viewTreeObserver?.addOnWindowFocusChangeListener { view?.viewTreeObserver?.addOnWindowFocusChangeListener {
if(it){ if(it){
CallerLogger.d(M_TAXI_P + TAG, "windows获取焦点") CallerLogger.d(M_TAXI_P + TAG, "windows获取焦点")
@@ -245,23 +269,52 @@ class TaxiPassengerBaseFragment() :
fun setOverMapDebug(){ fun setOverMapDebug(){
overMapView.setDebugMode(true) overMapView.setDebugMode(true)
showOrHide(true)
}
/**
* 显示或者隐藏到达乘客站点的洁面
* ① 取消订单 可有可无
* ② 到达上车点 隐藏到达终点的页面(上一个订单没有评价)
* ③ 到达目的地 显示到达终点的页面
* ④ debug 使用
*
* @param isShow true 展示 false 隐藏
*/
fun showOrHideArrivedEndLayout(isShow: Boolean) {
chekAndStartAutopilotView.visibility = View.GONE
if (isShow) {
exitFullVideoScreen(true)
arrivedView.aniArrived(true)
showOrHide(false)
RxUtils.createSubscribe(500) {
arrivedView.setDataAndStartAnimation()
VoiceNotice.showNotice("已到达目的地,带好随身物品,右侧下车更安全!期待下次再见", AIAssist.LEVEL2)
}
} else {
showOrHide(true)
arrivedView.aniArrived(false)
}
} }
fun showOrHideCheckAndStartAutopilotView(status:Int){ fun showOrHideCheckAndStartAutopilotView(status:Int){
arrivedView.visibility = View.GONE
when (status) { when (status) {
0 -> { 0 -> {
chekAndStartAutopilotView.visibility = View.VISIBLE if(chekAndStartAutopilotView.visibility == View.GONE){
statusBarView?.visibility = View.GONE showOrHide(false)
chekAndStartAutopilotView.resetCheckView() }
chekAndStartAutopilotView.aniCheckAndStartAutopilot(true,0)
} }
1 -> { 1 -> {
chekAndStartAutopilotView.visibility = View.VISIBLE if(chekAndStartAutopilotView.visibility == View.GONE){
statusBarView?.visibility = View.GONE showOrHide(false)
chekAndStartAutopilotView.startAnimation2StartAutopilit() }
chekAndStartAutopilotView.aniCheckAndStartAutopilot(true,1)
} }
2 -> { 2 -> {
chekAndStartAutopilotView.visibility = View.GONE chekAndStartAutopilotView.aniCheckAndStartAutopilot(false,2)
statusBarView?.visibility = View.VISIBLE showOrHide(true)
chekAndStartAutopilotView.resetCheckView() chekAndStartAutopilotView.resetCheckView()
} }
else -> {} else -> {}
@@ -280,28 +333,6 @@ class TaxiPassengerBaseFragment() :
/**
* 显示或者隐藏到达乘客站点的洁面
* ① 取消订单 可有可无
* ② 到达上车点 隐藏到达终点的页面(上一个订单没有评价)
* ③ 到达目的地 显示到达终点的页面
* ④ debug 使用
*
* @param isShow true 展示 false 隐藏
*/
fun showOrHideArrivedEndLayout(isShow: Boolean) {
if (isShow) {
exitFullVideoScreen(true)
arrivedView.visibility = View.VISIBLE
RxUtils.createSubscribe(500) {
arrivedView.setDataAndStartAnimation()
VoiceNotice.showNotice("已到达目的地,带好随身物品,右侧下车更安全!期待下次再见", AIAssist.LEVEL2)
}
} else {
arrivedView.visibility = View.GONE
}
}
private fun exitFullVideoScreen(resetVideoPlayer: Boolean) { private fun exitFullVideoScreen(resetVideoPlayer: Boolean) {
infoVideoView.exitFullScreenMode(resetVideoPlayer) infoVideoView.exitFullScreenMode(resetVideoPlayer)
} }
@@ -316,6 +347,136 @@ class TaxiPassengerBaseFragment() :
bottom.setCheckIndex(BottomBar.SelectView.OVERMAPVIEW) bottom.setCheckIndex(BottomBar.SelectView.OVERMAPVIEW)
} }
private fun showOrHide(isShow: Boolean){
val animatorSet = AnimatorSet()
val allAnimator = mutableListOf<Animator>()
allAnimator.addAll(aniStatusBar(isShow))
allAnimator.addAll(aniBottomBar(isShow))
allAnimator.addAll(aniSpeedSettingRow(isShow,speedView))
allAnimator.addAll(aniSpeedSettingRow(isShow,romaPView))
allAnimator.addAll(aniSpeedSettingRow(isShow,romaDistanceView))
allAnimator.addAll(aniSpeedSettingRow(isShow,ck_setting))
allAnimator.addAll(aniOrderInfo(isShow))
animatorSet.playTogether(allAnimator)
animatorSet.start()
}
@SuppressLint("ObjectAnimatorBinding")
fun aniStatusBar(show:Boolean):List<Animator>{
val statusBar = mutableListOf<Animator>()
val translationYStart: Float
val translationYEnd: Float
val alphaStart: Float
val alphaEnd: Float
if(show){
translationYStart = -statusBarView!!.height.toFloat()
translationYEnd = 0f
alphaStart = 0.3f
alphaEnd = 1f
}else{
translationYStart = 0f
translationYEnd = -statusBarView!!.height.toFloat()
alphaStart = 1f
alphaEnd = 0.3f
}
statusBar.add(ObjectAnimator.ofFloat(statusBarView, "translationY", translationYStart, translationYEnd).apply {
duration = 1000
})
//ofFloatMove.duration = 1000
statusBar.add( ObjectAnimator.ofFloat(statusBarView, "alpha", alphaStart, alphaEnd).apply {
duration = 1000
})
return statusBar
}
private fun aniBottomBar(show:Boolean):List<Animator>{
val statusBar = mutableListOf<Animator>()
val translationYStart: Float
val translationYEnd: Float
val alphaStart: Float
val alphaEnd: Float
if(show){
translationYStart = bottom!!.height.toFloat()
translationYEnd = 0f
alphaStart = 0.3f
alphaEnd = 1f
}else{
translationYStart = 0f
translationYEnd = bottom!!.height.toFloat()
alphaStart = 1f
alphaEnd = 0.3f
}
statusBar.add(ObjectAnimator.ofFloat(bottom, "translationY", translationYStart, translationYEnd).apply {
duration = 1000
})
statusBar.add(ObjectAnimator.ofFloat(bottom, "alpha", alphaStart, alphaEnd).apply {
duration = 1000
})
return statusBar
}
private fun aniSpeedSettingRow(show:Boolean,view:View):List<Animator>{
val statusBar = mutableListOf<Animator>()
val translationYStart: Float
val translationYEnd: Float
val alphaStart: Float
val alphaEnd: Float
if(show){
translationYStart = -view.height.toFloat()
translationYEnd = 0f
alphaStart = 0.0f
alphaEnd = 1f
}else{
translationYStart = 0f
translationYEnd = -view.height.toFloat()
alphaStart = 1f
alphaEnd = 0.0f
}
statusBar.add(ObjectAnimator.ofFloat(view, "translationY", translationYStart, translationYEnd).apply {
duration = 1000
})
statusBar.add(ObjectAnimator.ofFloat(view, "alpha", alphaStart, alphaEnd).apply {
duration = 1000
})
return statusBar
}
private fun aniOrderInfo(show:Boolean):List<Animator>{
val statusBar = mutableListOf<Animator>()
val translationYStart: Float
val translationYEnd: Float
val alphaStart: Float
val alphaEnd: Float
if(show){
translationYStart = itinerary.height.toFloat()/5
translationYEnd = 0f
alphaStart = 0.0f
alphaEnd = 1f
}else{
translationYStart = 0f
translationYEnd = itinerary.height.toFloat()/5
alphaStart = 1f
alphaEnd = 0.0f
}
statusBar.add(ObjectAnimator.ofFloat(itinerary, "translationY", translationYStart, translationYEnd).apply {
duration = 1000
})
statusBar.add(ObjectAnimator.ofFloat(itinerary, "alpha", alphaStart, alphaEnd).apply {
duration = 1000
})
return statusBar
}
companion object { companion object {
@JvmField @JvmField
val TAG = "TaxiPassengerBaseFragment" val TAG = "TaxiPassengerBaseFragment"

View File

@@ -1,16 +1,22 @@
package com.mogo.och.taxi.passenger.ui.arrived package com.mogo.och.taxi.passenger.ui.arrived
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ObjectAnimator
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.mogo.eagle.core.utilcode.kotlin.onClick 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.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.utils.BigFrameAnimatorContainer
import com.mogo.och.common.module.utils.FrameAnimatorContainer import com.mogo.och.common.module.utils.FrameAnimatorContainer
import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.taxi.passenger.R 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.WindowRelativeLayout
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
@@ -18,6 +24,8 @@ 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.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.actv_endstation
import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.v_video_right_rear_view import kotlinx.android.synthetic.main.taxt_u_p_arrived_end_panel.view.v_video_right_rear_view
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.arrivedView
import kotlinx.android.synthetic.main.taxt_u_p_check_startautopilot.view.aciv_check_autopilot
/** /**
* *
@@ -38,7 +46,9 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder() private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
private var taxiPxiaozhiLove: FrameAnimatorContainer?=null private var taxiPxiaozhiLove: BigFrameAnimatorContainer?=null
var arrivedVisilityChangeListenr:ArrivedVisilityChangeListenr?=null
private fun initView() { private fun initView() {
@@ -49,8 +59,8 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
visibility = View.GONE visibility = View.GONE
} }
taxiPxiaozhiLove = FrameAnimatorContainer(R.array.arrived_dest, 18,aciv_bg) taxiPxiaozhiLove = BigFrameAnimatorContainer(R.array.arrived_dest, 31,aciv_bg,isOnce = true)
taxiPxiaozhiLove?.setOnAnimStopListener(object : FrameAnimatorContainer.OnAnimationStoppedListener{ taxiPxiaozhiLove?.setOnAnimStopListener(object : BigFrameAnimatorContainer.OnAnimationStoppedListener{
override fun AnimationStopped() { override fun AnimationStopped() {
d(SceneConstant.M_TAXI_P + TAG, "动画暂停") d(SceneConstant.M_TAXI_P + TAG, "动画暂停")
} }
@@ -60,14 +70,16 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
override fun onVisibilityAggregated(isVisible: Boolean) { override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible) super.onVisibilityAggregated(isVisible)
d(SceneConstant.M_TAXI_P + TAG, "展示---:${isVisible}") d(SceneConstant.M_TAXI_P + TAG, "展示---:${isVisible}")
if(isVisible){ if (isVisible) {
taxiPxiaozhiLove = BigFrameAnimatorContainer(R.array.arrived_dest, 31,aciv_bg,isOnce = true)
taxiPxiaozhiLove?.start()
v_video_right_rear_view.resetView() v_video_right_rear_view.resetView()
taxiPxiaozhiLove?.reStart() } else {
}else{
v_video_right_rear_view.resetView() v_video_right_rear_view.resetView()
taxiPxiaozhiLove?.stop() taxiPxiaozhiLove = null
RxUtils.disposeSubscribe(subscribe) RxUtils.disposeSubscribe(subscribe)
} }
arrivedVisilityChangeListenr?.isShow(isVisible)
} }
override fun onAttachedToWindow() { override fun onAttachedToWindow() {
@@ -105,4 +117,37 @@ class ArrivedView : WindowRelativeLayout, ArrivedViewModel.ArrivedViewCallback {
actv_endstation.text = stationName actv_endstation.text = stationName
} }
fun aniArrived(show:Boolean){
RxUtils.createSubscribe(500) {
val alphaStart: Float
val alphaEnd: Float
if(show){
alphaStart = 0.0f
alphaEnd = 1f
visibility = View.VISIBLE
}else{
alphaStart = 1f
alphaEnd = 0.0f
visibility = View.GONE
}
ObjectAnimator.ofFloat(this@ArrivedView, "alpha", alphaStart, alphaEnd).apply {
duration = 2000
addListener(object :AnimatorListenerAdapter(){
override fun onAnimationEnd(animation: Animator) {
CallerLogger.d(TaxiPassengerBaseFragment.TAG,"onAnimationEndcarrivedView")
if(show){
visibility = View.VISIBLE
}else{
visibility = View.GONE
}
}
})
}.start()
}
}
interface ArrivedVisilityChangeListenr{
fun isShow(show: Boolean)
}
} }

View File

@@ -1,5 +1,8 @@
package com.mogo.och.taxi.passenger.ui.checkstartautopilot package com.mogo.och.taxi.passenger.ui.checkstartautopilot
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ObjectAnimator
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
@@ -11,7 +14,9 @@ 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.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.utils.BigFrameAnimatorContainer import com.mogo.och.common.module.utils.BigFrameAnimatorContainer
import com.mogo.och.taxi.passenger.R 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 com.mogo.och.taxi.passenger.widget.WindowRelativeLayout
import kotlinx.android.synthetic.main.taxt_u_p_base_fragment.chekAndStartAutopilotView
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.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.checkPhoneNumber
import kotlinx.android.synthetic.main.taxt_u_p_check_startautopilot.view.startAutopilotClose import kotlinx.android.synthetic.main.taxt_u_p_check_startautopilot.view.startAutopilotClose
@@ -46,6 +51,9 @@ class ChekAndStartAutopilotView : WindowRelativeLayout,
private var aniCheck2StartAutopilotView: BigFrameAnimatorContainer? = null private var aniCheck2StartAutopilotView: BigFrameAnimatorContainer? = null
var checkAndStartVisilityChangeListenr: CheckAndStartVisilityChangeListenr?=null
private fun initView(context: Context) { private fun initView(context: Context) {
d(SceneConstant.M_TAXI_P + TAG, "initView") d(SceneConstant.M_TAXI_P + TAG, "initView")
LayoutInflater.from(context).inflate(R.layout.taxt_u_p_check_startautopilot, this, true) LayoutInflater.from(context).inflate(R.layout.taxt_u_p_check_startautopilot, this, true)
@@ -60,9 +68,15 @@ class ChekAndStartAutopilotView : WindowRelativeLayout,
if (isVisible) { if (isVisible) {
aniCheck2StartAutopilotView = aniCheck2StartAutopilotView =
BigFrameAnimatorContainer(R.array.check2startautopilt, 39, aciv_check_autopilot, true) BigFrameAnimatorContainer(R.array.check2startautopilt, 39, aciv_check_autopilot, true)
aniCheck2StartAutopilotView?.mOnAnimationStoppedListener = object : BigFrameAnimatorContainer.OnAnimationStoppedListener{
override fun AnimationStopped() {
startAutopilotView.showStartAutopilot()
}
}
} else { } else {
aniCheck2StartAutopilotView = null aniCheck2StartAutopilotView = null
} }
checkAndStartVisilityChangeListenr?.isShow(isVisible)
} }
override fun onAttachedToWindow() { override fun onAttachedToWindow() {
@@ -107,4 +121,47 @@ class ChekAndStartAutopilotView : WindowRelativeLayout,
aniCheck2StartAutopilotView?.start() aniCheck2StartAutopilotView?.start()
} }
fun aniCheckAndStartAutopilot(show:Boolean,status:Int){
val alphaStart: Float
val alphaEnd: Float
if(show){
alphaStart = 0.0f
alphaEnd = 1f
visibility = View.VISIBLE
}else{
alphaStart = 1f
alphaEnd = 0.0f
visibility = View.GONE
}
when (status) {
0 -> {
checkPhoneNumber.visibility = View.VISIBLE
startAutopilotView.visibility = View.GONE
startAutopilotClose.visibility = View.GONE
ObjectAnimator.ofFloat(this@ChekAndStartAutopilotView, "alpha", alphaStart, alphaEnd).apply {
duration = 3000
}.start()
}
1 -> {
checkPhoneNumber.visibility = View.GONE
startAutopilotView.visibility = View.VISIBLE
startAutopilotClose.visibility = View.VISIBLE
aniCheck2StartAutopilotView?.start()
}
2 -> {
checkPhoneNumber.visibility = View.VISIBLE
startAutopilotView.visibility = View.GONE
startAutopilotClose.visibility = View.GONE
return
}
else -> {}
}
}
interface CheckAndStartVisilityChangeListenr{
fun isShow(show: Boolean)
}
} }

View File

@@ -66,7 +66,7 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
} }
}) })
taxiPStartAutopilot = FrameAnimatorContainer( taxiPStartAutopilot = FrameAnimatorContainer(
R.array.taxi_p_start_autopilot, 15, taxi_p_autopilot_btn_bg, true R.array.taxi_p_start_autopilot, 15, taxi_p_autopilot_btn_bg, true, initFirstFrame = false
) )
taxiPStartAutopilot?.setOnAnimStopListener(object : taxiPStartAutopilot?.setOnAnimStopListener(object :
FrameAnimatorContainer.OnAnimationStoppedListener { FrameAnimatorContainer.OnAnimationStoppedListener {
@@ -128,6 +128,32 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
} }
} }
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if(isVisible){
taxi_p_start_autopilot.background = null
taxi_p_start_autopilot.text = resources.getString(R.string.taxi_p_start_autopilot_txt)
}else{
unableStartAutopilot()
goneAllDoorState()
resetView()
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDetachedFromWindow")
}
}
private fun resetView() {
taxi_p_autopilot_starting.visibility = View.GONE
taxi_p_autopilot_btn_bg.visibility = View.GONE
taxi_p_start_autopilot.visibility = View.GONE
}
fun showStartAutopilot(){
taxi_p_autopilot_starting.visibility = View.VISIBLE
taxi_p_autopilot_btn_bg.visibility = View.VISIBLE
taxi_p_start_autopilot.visibility = View.VISIBLE
taxiPStartAutopilot?.reStart()
}
override fun onAttachedToWindow() { override fun onAttachedToWindow() {
super.onAttachedToWindow() super.onAttachedToWindow()
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onAttachedToWindow") CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onAttachedToWindow")
@@ -198,13 +224,6 @@ class StartAutopilotView : WindowRelativeLayout, StartAutopilotViewModel.StartAu
actv_rear_right_door.visibility = GONE actv_rear_right_door.visibility = GONE
} }
override fun onDetachedFromWindow() {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDetachedFromWindow")
unableStartAutopilot()
goneAllDoorState()
super.onDetachedFromWindow()
}
override fun unableStartAutopilotByDoorState() { override fun unableStartAutopilotByDoorState() {
unableStartAutopilot() unableStartAutopilot()
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 840 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

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

View File

@@ -46,7 +46,7 @@
android:textSize="@dimen/dp_55" android:textSize="@dimen/dp_55"
app:layout_constraintBottom_toTopOf="@+id/tv_passenger_start" app:layout_constraintBottom_toTopOf="@+id/tv_passenger_start"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_boll" app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_boll"
android:text="乘客数2位" /> tools:text="乘客数2位" />
<TextView <TextView
android:id="@+id/tv_passenger_start" android:id="@+id/tv_passenger_start"
@@ -61,7 +61,7 @@
app:layout_constraintEnd_toStartOf="@+id/numberCheckView" app:layout_constraintEnd_toStartOf="@+id/numberCheckView"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_boll" app:layout_constraintStart_toStartOf="@+id/iv_passenger_start_boll"
app:layout_constraintTop_toTopOf="@+id/iv_passenger_start_boll" app:layout_constraintTop_toTopOf="@+id/iv_passenger_start_boll"
android:text="起 点 : 衡山科学城" /> tools:text="起 点 : 衡山科学城" />
<ImageView <ImageView
android:id="@+id/iv_passenger_start_boll" android:id="@+id/iv_passenger_start_boll"
@@ -104,7 +104,7 @@
app:layout_constraintEnd_toStartOf="@+id/numberCheckView" app:layout_constraintEnd_toStartOf="@+id/numberCheckView"
app:layout_constraintStart_toStartOf="@+id/iv_passenger_end_boll" app:layout_constraintStart_toStartOf="@+id/iv_passenger_end_boll"
app:layout_constraintTop_toTopOf="@+id/iv_passenger_end_boll" app:layout_constraintTop_toTopOf="@+id/iv_passenger_end_boll"
android:text="终 点 : 石鼓收费站" /> tools:text="终 点 : 石鼓收费站" />
<com.mogo.och.taxi.passenger.widget.NumberCheckView <com.mogo.och.taxi.passenger.widget.NumberCheckView
android:id="@+id/numberCheckView" android:id="@+id/numberCheckView"

View File

@@ -14,6 +14,8 @@
android:layout_marginTop="@dimen/dp_150" android:layout_marginTop="@dimen/dp_150"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:src="@drawable/light_00003" android:src="@drawable/light_00003"
android:visibility="gone"
tools:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -24,14 +26,18 @@
android:layout_width="1000dp" android:layout_width="1000dp"
android:layout_height="500dp" android:layout_height="500dp"
android:clickable="false" android:clickable="false"
android:visibility="gone"
tools:visibility="visible"
android:src="@drawable/image_00000_0" android:src="@drawable/image_00000_0"
android:layout_marginBottom="@dimen/dp_62" android:layout_marginBottom="@dimen/dp_12"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" /> app:layout_constraintRight_toRightOf="parent" />
<TextView <TextView
android:id="@+id/taxi_p_start_autopilot" android:id="@+id/taxi_p_start_autopilot"
android:visibility="gone"
tools:visibility="visible"
android:layout_width="@dimen/taxi_p_start_autopilot_btn_width" android:layout_width="@dimen/taxi_p_start_autopilot_btn_width"
android:layout_height="@dimen/dp_152" android:layout_height="@dimen/dp_152"
android:gravity="center" android:gravity="center"

View File

@@ -228,26 +228,41 @@
<string-array name="arrived_dest"> <string-array name="arrived_dest">
<item>@drawable/check2startautopilt_000</item> <item>@drawable/arrive_dest_000</item>
<item>@drawable/check2startautopilt_001</item> <item>@drawable/arrive_dest_001</item>
<item>@drawable/check2startautopilt_002</item> <item>@drawable/arrive_dest_002</item>
<item>@drawable/check2startautopilt_003</item> <item>@drawable/arrive_dest_003</item>
<item>@drawable/check2startautopilt_004</item> <item>@drawable/arrive_dest_004</item>
<item>@drawable/check2startautopilt_005</item> <item>@drawable/arrive_dest_005</item>
<item>@drawable/check2startautopilt_006</item> <item>@drawable/arrive_dest_006</item>
<item>@drawable/check2startautopilt_007</item> <item>@drawable/arrive_dest_007</item>
<item>@drawable/check2startautopilt_008</item> <item>@drawable/arrive_dest_008</item>
<item>@drawable/check2startautopilt_009</item> <item>@drawable/arrive_dest_009</item>
<item>@drawable/check2startautopilt_010</item> <item>@drawable/arrive_dest_011</item>
<item>@drawable/check2startautopilt_011</item> <item>@drawable/arrive_dest_011</item>
<item>@drawable/check2startautopilt_012</item> <item>@drawable/arrive_dest_012</item>
<item>@drawable/check2startautopilt_013</item> <item>@drawable/arrive_dest_013</item>
<item>@drawable/check2startautopilt_014</item> <item>@drawable/arrive_dest_014</item>
<item>@drawable/check2startautopilt_015</item> <item>@drawable/arrive_dest_015</item>
<item>@drawable/check2startautopilt_016</item> <item>@drawable/arrive_dest_016</item>
<item>@drawable/check2startautopilt_017</item> <item>@drawable/arrive_dest_017</item>
<item>@drawable/check2startautopilt_018</item> <item>@drawable/arrive_dest_018</item>
<item>@drawable/arrive_dest_019</item>
<item>@drawable/arrive_dest_020</item>
<item>@drawable/arrive_dest_021</item>
<item>@drawable/arrive_dest_022</item>
<item>@drawable/arrive_dest_023</item>
<item>@drawable/arrive_dest_024</item>
<item>@drawable/arrive_dest_025</item>
<item>@drawable/arrive_dest_026</item>
<item>@drawable/arrive_dest_027</item>
<item>@drawable/arrive_dest_028</item>
<item>@drawable/arrive_dest_029</item>
<item>@drawable/arrive_dest_030</item>
</string-array> </string-array>
<string-array name="check2startautopilt"> <string-array name="check2startautopilt">

View File

@@ -54,6 +54,7 @@
<color name="taxi_p_333333">#333333</color> <color name="taxi_p_333333">#333333</color>
<color name="taxi_p_995D6A8C">#995D6A8C</color> <color name="taxi_p_995D6A8C">#995D6A8C</color>
<color name="taxi_p_B37E90BF">#B37E90BF</color> <color name="taxi_p_B37E90BF">#B37E90BF</color>
<color name="taxi_p_876E788B">#876E788B</color>

View File

@@ -13,10 +13,10 @@ if (!isAndroidTest) {
apply from: rootProject.file('gradle/bytex/bytex_log_chain.gradle') apply from: rootProject.file('gradle/bytex/bytex_log_chain.gradle')
apply from: rootProject.file('gradle/bytex/bytex_sticky_service.gradle') apply from: rootProject.file('gradle/bytex/bytex_sticky_service.gradle')
apply from: rootProject.file('gradle/bytex/bytex_thread_opt.gradle') apply from: rootProject.file('gradle/bytex/bytex_thread_opt.gradle')
apply from: rootProject.file('gradle/bytex/bytex_lancetx.gradle') // apply from: rootProject.file('gradle/bytex/bytex_lancetx.gradle')
apply from: rootProject.file('gradle/bytex/bytex_apm.gradle') apply from: rootProject.file('gradle/bytex/bytex_apm.gradle')
apply from: rootProject.file('gradle/bytex/bytex_systrace.gradle') apply from: rootProject.file('gradle/bytex/bytex_systrace.gradle')
apply from: rootProject.file('gradle/bytex/bytex_matrix.gradle') // apply from: rootProject.file('gradle/bytex/bytex_matrix.gradle')
apply from: rootProject.file('gradle/bytex/bytex_handler_proxy.gradle') apply from: rootProject.file('gradle/bytex/bytex_handler_proxy.gradle')
// apply from: rootProject.file('gradle/bytex/bytex_btrace.gradle') // apply from: rootProject.file('gradle/bytex/bytex_btrace.gradle')
} }