Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.0' into dev_robotaxi-d_240912_6.7.2_local
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ObjectAnimator
|
||||
import android.app.Activity
|
||||
import android.graphics.PixelFormat
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.LinearLayout
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
/**
|
||||
* 打开app后首次与域控链接或与域控断连1min后,需要回到界面并呈现一遍流程
|
||||
*/
|
||||
class ColdStartAgainWindow constructor(activity: Activity){
|
||||
|
||||
private var mActivity: Activity = activity
|
||||
private var mWindowParams: WindowManager.LayoutParams? = null
|
||||
private var mWindowManager: WindowManager? = null
|
||||
private lateinit var mFloatLayout: View
|
||||
|
||||
private lateinit var clColdStartAgain: ConstraintLayout
|
||||
private lateinit var svpColdStart: SimpleVideoPlayer
|
||||
private lateinit var coldStart: ColdStartView
|
||||
|
||||
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
|
||||
|
||||
init {
|
||||
initFloatWindow()
|
||||
}
|
||||
|
||||
private fun initFloatWindow(){
|
||||
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.window_cold_start_again, null) as View
|
||||
clColdStartAgain = mFloatLayout.findViewById(R.id.cl_cold_start_again)
|
||||
svpColdStart = mFloatLayout.findViewById(R.id.svp_cold_start)
|
||||
coldStart = mFloatLayout.findViewById(R.id.view_cold_start_again)
|
||||
|
||||
val videoUrl:String = if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
|
||||
"android.resource://" + mActivity.packageName + "/" + R.raw.biz_login_taxi_bg
|
||||
}else{
|
||||
svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_start)
|
||||
"android.resource://" + mActivity.packageName + "/" + R.raw.biz_login_bus_bg
|
||||
}
|
||||
svpColdStart.setIsTouchWiget(false)
|
||||
svpColdStart.setIsTouchWigetFull(false)
|
||||
svpColdStart.enableshowProgressDialog = false
|
||||
svpColdStart.enableDoubleClick = false
|
||||
|
||||
coldStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{
|
||||
override fun coldStartSuccess() {
|
||||
gsyVideoOptionBuilder.setUrl(videoUrl)
|
||||
.setCacheWithPlay(false)
|
||||
.setPlayTag("TaxiPassengerArrivedView")
|
||||
.build(svpColdStart)
|
||||
|
||||
svpColdStart.setVideoAllCallBack(object : GSYSampleCallBack() {
|
||||
override fun onAutoComplete(url: String?, vararg objects: Any?) {
|
||||
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_end)
|
||||
}else{
|
||||
svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
|
||||
}
|
||||
this@ColdStartAgainWindow.hideFloatWindow()
|
||||
}
|
||||
})
|
||||
svpColdStart.startPlayLogic()
|
||||
}
|
||||
|
||||
override fun coldStartFail() {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
mWindowParams = WindowManager.LayoutParams()
|
||||
mWindowManager = mActivity.windowManager
|
||||
mWindowParams?.let {
|
||||
it.format = PixelFormat.RGBA_8888
|
||||
it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|
||||
it.gravity = Gravity.START or Gravity.TOP
|
||||
it.width = WindowManager.LayoutParams.MATCH_PARENT
|
||||
it.height = WindowManager.LayoutParams.MATCH_PARENT
|
||||
it.alpha = 1.0f
|
||||
}
|
||||
}
|
||||
|
||||
fun showFloatWindow() {
|
||||
if (mFloatLayout.parent == null) {
|
||||
val metrics = DisplayMetrics()
|
||||
mWindowManager!!.defaultDisplay.getMetrics(metrics)
|
||||
mWindowParams!!.x = 0
|
||||
mWindowParams!!.y = 0
|
||||
mWindowManager!!.addView(mFloatLayout, mWindowParams)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun hideFloatWindow() {
|
||||
if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -503,10 +503,6 @@ class ColdStartView @JvmOverloads constructor(
|
||||
* 隐藏冷启动视图
|
||||
*/
|
||||
private fun hideColdStartView(){
|
||||
// UiThreadHandler.postDelayed({
|
||||
// this@ColdStartView.visibility = View.GONE
|
||||
// coldStartResultListener?.coldStartSuccess()
|
||||
// }, 2000)
|
||||
// 假设view是你想要淡出的视图
|
||||
this@ColdStartView.animate().alpha(0.0f).setDuration(1000).start()
|
||||
coldStartResultListener?.coldStartSuccess()
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<?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"
|
||||
android:id="@+id/cl_cold_start_again"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
|
||||
android:id="@+id/svp_cold_start"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.ColdStartView
|
||||
android:id="@+id/view_cold_start_again"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -10,6 +10,7 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.data.map.*
|
||||
import com.mogo.eagle.core.function.angle.scenes.CrossRoad
|
||||
import com.mogo.eagle.core.function.angle.scenes.Default
|
||||
import com.mogo.eagle.core.function.angle.scenes.LongSight
|
||||
import com.mogo.eagle.core.function.angle.scenes.Roma
|
||||
import com.mogo.eagle.core.function.api.map.angle.*
|
||||
import com.mogo.eagle.core.function.api.map.angle.IMoGoVisualAngleChangeProvider.OnMoGoVisualAngleSceneChangeListener
|
||||
@@ -42,6 +43,8 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
|
||||
|
||||
private val prevScene by lazy { AtomicReference<Scene>() }
|
||||
|
||||
private var timerJob: Job? = null
|
||||
|
||||
private val listener = object : IMoGoMapRoadListener {
|
||||
private val roadId = AtomicReference<String>()
|
||||
private val triggerRoadId = AtomicReference<String>()
|
||||
@@ -187,7 +190,7 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
|
||||
|
||||
private fun doChangeAngle(target: Scene) {
|
||||
val angle = target.getVisualAngleMode()
|
||||
CallerMapUIServiceManager.getMapUIController()?.also {
|
||||
CallerMapUIServiceManager.getMapUIController()?.also { itx ->
|
||||
Log.d(TAG, "--- doChangeAngle ---: $target")
|
||||
val prev = prevScene.get()
|
||||
try {
|
||||
@@ -204,7 +207,23 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
|
||||
DOWN -> CallerMapUIServiceManager.getMapUIController()?.setScreenToOriginDis(5.0f)
|
||||
}
|
||||
if (target !is Roma) {
|
||||
it.changeMapVisualAngle(angle, null)
|
||||
if (target is LongSight) {
|
||||
timerJob?.safeCancel()
|
||||
scope.launch {
|
||||
CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(false)
|
||||
itx.changeMapVisualAngle(angle, null)
|
||||
delay(3000)
|
||||
CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true)
|
||||
}.also {
|
||||
it.invokeOnCompletion {
|
||||
CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true)
|
||||
}
|
||||
timerJob = it
|
||||
}
|
||||
} else {
|
||||
timerJob?.safeCancel()
|
||||
itx.changeMapVisualAngle(angle, null)
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (prev == null || prev.javaClass != target.javaClass) {
|
||||
|
||||
Reference in New Issue
Block a user