From 337b03b22b34f5037c4b7612c587850984e9378e Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Thu, 25 Nov 2021 11:13:56 +0800 Subject: [PATCH] =?UTF-8?q?[Fix]=E8=A7=A3=E5=86=B3=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E7=9B=B4=E6=92=AD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. SurfaceView换成TextureView解决不能显示圆角问题 2. 从播放页回到摄像头列表页刷新下数据 3. UI细节调整 --- .../core/function/hmi/ui/MoGoHmiFragment.kt | 4 ++ .../hmi/ui/camera/CameraListAdapter.kt | 2 +- .../function/hmi/ui/camera/CameraListView.kt | 56 +++++++++++++------ .../src/main/res/layout/view_camera_list.xml | 4 +- gradle.properties | 16 +++--- 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index b63780441a..ca8a5bf68d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -490,6 +490,10 @@ class MoGoHmiFragment : MvpFragment else -> ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_nor) } } + + override fun refreshCameraList() { + cameraListView?.refreshCameraList(CallerMonitorManager.getCameraList()) + } }) cameraViewFloat = WarningFloat.with(it) .setTag("CameraListFloat") diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListAdapter.kt index 63cd6d1e05..706fe7ca26 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListAdapter.kt @@ -36,7 +36,7 @@ class CameraListAdapter : Adapter { data?.let { val cameraEntity = it[position] holder.cameraInfo.text = with(cameraEntity) { - if (!isCarLive()) "${crossingName}${headingDesc}${getHeadingStr()}" else "${street}${township}" + if (!isCarLive()) "${crossingName}${headingDesc}${getHeadingStr()}" else "${street ?: ""}${township}" } holder.bottomLine.visibility = if (it.size - 1 == position) View.INVISIBLE else View.VISIBLE diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListView.kt index 549a767ab2..842dd31329 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/camera/CameraListView.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.hmi.ui.camera import android.animation.ValueAnimator +import android.annotation.SuppressLint import android.app.Application import android.content.Context import android.graphics.Color @@ -42,7 +43,9 @@ class CameraListView : FrameLayout { private val TAG = "CameraListView" - var cameraInfoList = ArrayList() + private val cameraInfoList by lazy { + ArrayList() + } private var clickListener: ClickListener? = null private val gsyVideoOptionBuilder by lazy { GSYVideoOptionBuilder() @@ -96,7 +99,10 @@ class CameraListView : FrameLayout { when { !cameraEntity.isCarLive() -> { if (!cameraEntity.flvUrl.isNullOrEmpty()) { - Logger.d(TAG, "播放地址为:${cameraEntity.flvUrl!!},ip为:${cameraEntity.ip}") + Logger.d( + TAG, + "播放地址为:${cameraEntity.flvUrl!!},ip为:${cameraEntity.ip}" + ) gsyVideoPlay(cameraEntity.flvUrl!!) } else if (!cameraEntity.ip.isNullOrEmpty()) { Logger.d(TAG, "打开推流的摄像头ip为:${cameraEntity.ip}") @@ -109,7 +115,7 @@ class CameraListView : FrameLayout { liveSn = cameraEntity.sn MoGoAiCloudTrafficLive.viewDesignativeVehicleLive( liveSn, - surfaceView, + textureView, trafficCarLiveCallBack ) } @@ -122,15 +128,9 @@ class CameraListView : FrameLayout { isCloseStatus -> clickListener?.onClose(it)// 直接退出 else -> {// 返回摄像头列表 showCameraList() + clickListener?.refreshCameraList() isCloseStatus = true - // 无信号倒计时时点击返回 - if (ivSignalIcon.visibility == View.VISIBLE) { - clickListener?.onShowLive(false) - } stopLive() - if (valueAnimator.isRunning) { - valueAnimator.cancel() - } } } clickListener?.onShowLive(false) @@ -165,7 +165,10 @@ class CameraListView : FrameLayout { } } }) - progressBar.indeterminateDrawable.colorFilter = PorterDuffColorFilter(ContextCompat.getColor(context, R.color.notice_blue), PorterDuff.Mode.MULTIPLY) + progressBar.indeterminateDrawable.colorFilter = PorterDuffColorFilter( + ContextCompat.getColor(context, R.color.notice_blue), + PorterDuff.Mode.MULTIPLY + ) // 后期可改为动态获取3s起始位置,暂时写死 spannableStringBuilder.setSpan( ForegroundColorSpan(Color.parseColor("#2966EE")), @@ -181,12 +184,14 @@ class CameraListView : FrameLayout { ) valueAnimator.duration = 3000 valueAnimator.addUpdateListener { + if (rvCameraList.visibility == View.VISIBLE) return@addUpdateListener when (val currentValue = it.animatedValue as Int) { 0 -> { if (isPlaySuccess) { clickListener?.onClose(ivSignalIcon) } else { showCameraList() + clickListener?.refreshCameraList() clickListener?.onShowLive(false) } isPlaySuccess = false @@ -203,7 +208,8 @@ class CameraListView : FrameLayout { } } liveStreamManager.setLiveStatusChangeCallback { - surfaceView.post { + textureView + .post { handleSnLiveStatus(it) } } @@ -250,7 +256,7 @@ class CameraListView : FrameLayout { } // 开始直播 progressBar.visibility = View.GONE - surfaceView.visibility = View.VISIBLE + textureView.visibility = View.VISIBLE isPlaySuccess = true } } @@ -284,6 +290,16 @@ class CameraListView : FrameLayout { } } + @SuppressLint("NotifyDataSetChanged") + fun refreshCameraList(cameraInfoList: List?) { + Logger.d(TAG, "refreshCameraList") + this.cameraInfoList.clear() + cameraInfoList?.let { + this.cameraInfoList.addAll(it) + } + rvCameraList.adapter?.notifyDataSetChanged() + } + fun setClickListener(clickListener: ClickListener) { this.clickListener = clickListener } @@ -308,7 +324,9 @@ class CameraListView : FrameLayout { override fun onDetachedFromWindow() { super.onDetachedFromWindow() stopLive() - valueAnimator.cancel() + if (valueAnimator.isStarted || valueAnimator.isRunning) { + valueAnimator.cancel() + } } private fun stopLive() { @@ -329,7 +347,7 @@ class CameraListView : FrameLayout { private fun showLiveView() { if (!isCarLive()) { - surfaceView.visibility = View.GONE + textureView.visibility = View.GONE } else { svpPlayer.visibility = View.GONE } @@ -343,10 +361,13 @@ class CameraListView : FrameLayout { } private fun showCameraList() { + if (valueAnimator.isStarted || valueAnimator.isRunning) { + valueAnimator.cancel() + } tvCameraTitle.visibility = View.VISIBLE rvCameraList.visibility = View.VISIBLE svpPlayer.visibility = View.GONE - surfaceView.visibility = View.GONE + textureView.visibility = View.GONE progressBar.visibility = View.GONE ivSignalIcon.visibility = View.GONE tvTipContent.visibility = View.GONE @@ -359,7 +380,7 @@ class CameraListView : FrameLayout { tvTipContent.visibility = View.VISIBLE tvCameraTitle.visibility = View.GONE rvCameraList.visibility = View.GONE - surfaceView.visibility = View.GONE + textureView.visibility = View.GONE svpPlayer.visibility = View.GONE progressBar.visibility = View.GONE shadowView.visibility = View.GONE @@ -368,5 +389,6 @@ class CameraListView : FrameLayout { interface ClickListener { fun onShowLive(isShow: Boolean) fun onClose(v: View) + fun refreshCameraList() } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_camera_list.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_camera_list.xml index 19fb13cef7..b043efbb09 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_camera_list.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_camera_list.xml @@ -66,8 +66,8 @@ app:layout_constraintTop_toTopOf="parent" /> -