diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt index d4cc2bb590..9dc41738e3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt @@ -207,7 +207,7 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { val commentAdapter = rvCommentList.adapter as CommentAdapter val selectComment = commentAdapter.getSelectComment() if(selectComment.isEmpty()){ - ToastUtils.showLong("请选择评论内容") + ToastUtils.showLong("请选择评价内容") return } iTaxiPassengerScoreCallback?.onScoreCallback(TaxiPassengerScoreUpdateOrderReqBean(orderNo,currentFraction,selectComment)) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt index b664ff357b..639adfbce8 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt @@ -20,7 +20,6 @@ import com.mogo.och.taxi.passenger.utils.windowdispatch.ReflectionUtils import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable -import java.lang.ref.WeakReference import java.util.concurrent.TimeUnit /** @@ -50,8 +49,8 @@ object OverlayLeftViewUtils { private var subscribe: Disposable?=null - private var taxiPassengerMogoConsultView: WeakReference? = null - private var taxiPassengerMogoMoviesView: WeakReference? = null + private var taxiPassengerMogoConsultView: TaxiPassengerMogoConsultView? = null + private var taxiPassengerMogoMoviesView: TaxiPassengerMogoMoviesView? = null /** * 添加覆盖View在Activity上面 @@ -100,7 +99,7 @@ object OverlayLeftViewUtils { val liveSelected = object :ListAdapter.OnTabSelectListener{ override fun onSelect(v: View?) { close(view, windowManager) - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(true) closeConsult() closeMovice() } @@ -109,30 +108,20 @@ object OverlayLeftViewUtils { val consultSelect = object :ListAdapter.OnTabSelectListener{ override fun onSelect(v: View?) { close(view, windowManager) - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(true) closeMovice() - if(taxiPassengerMogoConsultView?.get() != null){ - OverlayViewUtils.showOverlayView(context,taxiPassengerMogoConsultView?.get()) - }else{ - taxiPassengerMogoConsultView = - WeakReference(TaxiPassengerMogoConsultView(context)) - OverlayViewUtils.showOverlayView(context,taxiPassengerMogoConsultView?.get()) - } + taxiPassengerMogoConsultView = TaxiPassengerMogoConsultView(context) + OverlayViewUtils.showOverlayView(context,taxiPassengerMogoConsultView) } } val entertainmentSelect = object :ListAdapter.OnTabSelectListener{ override fun onSelect(v: View?) { close(view, windowManager) - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(true) closeConsult() - if(taxiPassengerMogoMoviesView?.get() != null){ - OverlayViewUtils.showOverlayView(context,taxiPassengerMogoMoviesView?.get()) - }else{ - taxiPassengerMogoMoviesView = - WeakReference(TaxiPassengerMogoMoviesView(context)) - OverlayViewUtils.showOverlayView(context,taxiPassengerMogoMoviesView?.get()) - } + taxiPassengerMogoMoviesView = TaxiPassengerMogoMoviesView(context) + OverlayViewUtils.showOverlayView(context,taxiPassengerMogoMoviesView) } } @@ -198,7 +187,7 @@ object OverlayLeftViewUtils { /** * 关闭状态栏 */ - fun close(overlayView: View,windowManager: WindowManager?) { + private fun close(overlayView: View,windowManager: WindowManager?) { params?.x = DEVIATION_WIDTH windowManager?.updateViewLayout(overlayView, params) } @@ -235,7 +224,7 @@ object OverlayLeftViewUtils { if (!isShowing) { return } - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(true) // 管理的要关闭都得关闭 closeConsult() closeMovice() @@ -259,17 +248,15 @@ object OverlayLeftViewUtils { } private fun closeMovice() { - if (taxiPassengerMogoMoviesView?.get() != null) { - OverlayViewUtils.dismissOverlayView(taxiPassengerMogoMoviesView?.get()) - taxiPassengerMogoMoviesView = null - } + OverlayViewUtils.dismissOverlayView(taxiPassengerMogoMoviesView) + taxiPassengerMogoMoviesView= null + System.gc() } private fun closeConsult() { - if (taxiPassengerMogoConsultView?.get() != null) { - OverlayViewUtils.dismissOverlayView(taxiPassengerMogoConsultView?.get()) - taxiPassengerMogoConsultView = null - } + OverlayViewUtils.dismissOverlayView(taxiPassengerMogoConsultView) + taxiPassengerMogoConsultView = null + System.gc() } private fun getViewBounds(view: View): Rect { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FullVideoUtils.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FullVideoUtils.kt index 6ad9edd4ad..fc64285424 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FullVideoUtils.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/FullVideoUtils.kt @@ -5,7 +5,8 @@ import android.app.Activity import android.content.Context import android.view.View import android.view.WindowManager -import com.mogo.och.taxi.passenger.ui.video.FullVideoUtils +import com.mogo.och.taxi.passenger.widget.ConsultVideoPlayer +import com.shuyu.gsyvideoplayer.GSYVideoManager import java.lang.Exception /** @@ -69,10 +70,19 @@ object FullVideoUtils { /** * 移除覆盖View在Activity上面 */ - fun dismissOverlayView() { + fun dismissOverlayView(needReleas:Boolean) { if (!isShowing) { return } + val consultVideoPlayer = + lastOverlayView?.findViewById(GSYVideoManager.FULLSCREEN_ID) + consultVideoPlayer?.let { + if(needReleas){ + it.onVideoReset() + it.setVideoAllCallBack(null) + it.smalllPlayer?.clearFullscreenLayout(it) + } + } try { if (windowManager != null) { windowManager!!.removeView(lastOverlayView) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoConsultView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoConsultView.kt index e06ed2481b..086de6047d 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoConsultView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoConsultView.kt @@ -47,7 +47,6 @@ class TaxiPassengerMogoConsultView :RelativeLayout { constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) - private lateinit var rvVideoPlaylist: RecyclerView private lateinit var indicatorView: IndicatorView private lateinit var clContain: ConstraintLayout @@ -85,12 +84,19 @@ class TaxiPassengerMogoConsultView :RelativeLayout { if(prePlayerPosition!=centerItemPosition) { if(player.currentState==GSYVideoView.CURRENT_STATE_PAUSE){ player.onVideoReset() - //player.startPlayLogic() }else{ - //player.startPlayLogic() + } + val prePlayer = + carouselLayoutManager.findViewByPosition(prePlayerPosition) + prePlayer?.let { + if(it is ConsultVideoPlayer){ + it.onVideoReset() + } } val taxiPassengerVideoPlay = arrayListOf[centerItemPosition] - setBackageAndPlayNext(taxiPassengerVideoPlay, player, centerItemPosition) + if (player.getVideoAllCallBack()==null) { + setBackageAndPlayNext(taxiPassengerVideoPlay, player, centerItemPosition) + } }else{ player.onVideoResume(false) } @@ -237,19 +243,16 @@ class TaxiPassengerMogoConsultView :RelativeLayout { override fun onDetachedFromWindow() { - super.onDetachedFromWindow() val carouselLayoutManager = rvVideoPlaylist.layoutManager as CarouselLayoutManager val centerItemPosition: Int = carouselLayoutManager.centerItemPosition val player = carouselLayoutManager.findViewByPosition(centerItemPosition) player?.let { if(player is ConsultVideoPlayer){ - player.release() + player.currentPlayer.release() + player.onVideoReset() } } - } - - companion object { - const val TAG = "TaxiPassengerMogoConsultView" + super.onDetachedFromWindow() } init { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoMoviesView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoMoviesView.kt index 940956d2df..786d99b9f0 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoMoviesView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/TaxiPassengerMogoMoviesView.kt @@ -47,7 +47,6 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) - private lateinit var rvVideoPlaylist: RecyclerView private lateinit var indicatorView: IndicatorView private lateinit var clContain: ConstraintLayout @@ -85,12 +84,19 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { if(prePlayerPosition!=centerItemPosition) { if(player.currentState==GSYVideoView.CURRENT_STATE_PAUSE){ player.onVideoReset() - //player.startPlayLogic() }else{ - //player.startPlayLogic() + } + val prePlayer = + carouselLayoutManager.findViewByPosition(prePlayerPosition) + prePlayer?.let { + if(it is ConsultVideoPlayer){ + it.onVideoReset() + } } val taxiPassengerVideoPlay = arrayListOf[centerItemPosition] - setBackageAndPlayNext(taxiPassengerVideoPlay, player, centerItemPosition) + if (player.getVideoAllCallBack()==null) { + setBackageAndPlayNext(taxiPassengerVideoPlay, player, centerItemPosition) + } }else{ player.onVideoResume(false) } @@ -237,19 +243,16 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { override fun onDetachedFromWindow() { - super.onDetachedFromWindow() val carouselLayoutManager = rvVideoPlaylist.layoutManager as CarouselLayoutManager val centerItemPosition: Int = carouselLayoutManager.centerItemPosition val player = carouselLayoutManager.findViewByPosition(centerItemPosition) player?.let { if(player is ConsultVideoPlayer){ - player.release() + player.currentPlayer.release() + player.onVideoReset() } } - } - - companion object { - const val TAG = "TaxiPassengerMogoConsultView" + super.onDetachedFromWindow() } init { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt index 34026a60da..c742b59b3a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/widget/ConsultVideoPlayer.kt @@ -40,7 +40,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { private lateinit var layoutBottom: ConstraintLayout private var fullVideoPlayer:ConsultVideoPlayer?=null - private var smalllPlayer:ConsultVideoPlayer?=null + var smalllPlayer:ConsultVideoPlayer?=null private var currentTime = 0 @@ -119,21 +119,23 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { } override fun onDetachedFromWindow() { - super.onDetachedFromWindow() mProgressBar?.progress = 0 fullVideoPlayer?.let { clearFullscreenLayout(it) } fullVideoPlayer = null - onVideoReset() - setVideoAllCallBack(null) + if(!isIfCurrentIsFullscreen) { + onVideoReset() + setVideoAllCallBack(null) + } + super.onDetachedFromWindow() } override fun onClick(v: View?) { super.onClick(v) when (v?.id) { R.id.fullscreen -> { - startWindowFullscreenOwn(context, false, false) + startWindowFullscreenOwn(context) } R.id.aiv_start_play -> { if(currentState==GSYVideoView.CURRENT_STATE_PAUSE){ @@ -184,7 +186,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { if(isIfCurrentIsFullscreen){ smalllPlayer?.clearFullscreenLayout(this) smalllPlayer?.currentTime = -1 - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(false) } } @@ -198,16 +200,16 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { override fun onSurfaceAvailable(surface: Surface) { super.onSurfaceAvailable(surface) if (GSYVideoType.getRenderType() != GSYVideoType.TEXTURE) { -// if (mThumbImageViewLayout != null && mThumbImageViewLayout.visibility == View.VISIBLE) { -// mThumbImageViewLayout.visibility = View.INVISIBLE -// } + if (mThumbImageViewLayout != null && mThumbImageViewLayout.visibility == View.VISIBLE) { + mThumbImageViewLayout.visibility = View.INVISIBLE + } } } override fun onAutoCompletion() { super.onAutoCompletion() if(mIfCurrentIsFullscreen){ - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(false) fullVideoPlayer?.let { clearFullscreenLayout(it) } @@ -222,8 +224,8 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { } } - private fun startWindowFullscreenOwn(context:Context, actionBar:Boolean, statusBar:Boolean){ - val gsyBaseVideoPlayer = startWindowFullscreen(context, actionBar, statusBar) + private fun startWindowFullscreenOwn(context:Context){ + val gsyBaseVideoPlayer = startWindowFullscreen(context) gsyBaseVideoPlayer?.let { val gsyVideoPlayer = it as StandardGSYVideoPlayer gsyVideoPlayer.setLockClickListener(mLockClickListener) @@ -257,8 +259,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { standardGSYVideoPlayer.titleTextView?.text = titleTextView.text } - override fun startWindowFullscreen(context:Context, actionBar:Boolean, statusBar:Boolean):GSYBaseVideoPlayer?{ - + private fun startWindowFullscreen(context:Context):GSYBaseVideoPlayer?{ if (mTextureViewContainer.childCount > 0) { mTextureViewContainer.removeAllViews() } @@ -299,7 +300,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { gsyVideoPlayer.fullscreenButton.setOnClickListener { v -> if (mBackFromFullScreenListener == null) { clearFullscreenLayout(gsyVideoPlayer) - FullVideoUtils.dismissOverlayView() + FullVideoUtils.dismissOverlayView(false) } else { mBackFromFullScreenListener.onClick(v) } @@ -330,11 +331,8 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { /** * 全屏 */ - override fun resolveFullVideoShow( - context: Context?, - gsyVideoPlayer: GSYBaseVideoPlayer, - frameLayout: FrameLayout - ) { + override fun resolveFullVideoShow(context: Context?, gsyVideoPlayer: GSYBaseVideoPlayer, + frameLayout: FrameLayout) { val lp = gsyVideoPlayer.layoutParams as LayoutParams lp.setMargins(0, 0, 0, 0) lp.height = ViewGroup.LayoutParams.MATCH_PARENT @@ -367,9 +365,9 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { checkAutoFullWithSizeAndAdaptation(gsyVideoPlayer) } - private fun clearFullscreenLayout(gsyVideoPlayer:ConsultVideoPlayer) { + fun clearFullscreenLayout(gsyVideoPlayer:ConsultVideoPlayer) { mIfCurrentIsFullscreen = false - val delay = 0 + val delay = 100 gsyVideoPlayer.smalllPlayer = null mInnerHandler.postDelayed({ resolveNormalVideoShow(gsyVideoPlayer) }, delay.toLong()) } diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_video_shadow.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_video_shadow.png new file mode 100644 index 0000000000..b348323df0 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_video_shadow.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow.png new file mode 100644 index 0000000000..b348323df0 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_video_shadow.png differ diff --git a/config.gradle b/config.gradle index 139e1e7568..48b5921b33 100644 --- a/config.gradle +++ b/config.gradle @@ -44,7 +44,7 @@ ext { // json 转换 gson : "com.google.code.gson:gson:2.8.4", // 内存泄漏检测 - debugleakcanary : "com.squareup.leakcanary:leakcanary-android:2.7", + debugleakcanary : "com.squareup.leakcanary:leakcanary-android:2.9.1", releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.3", testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.3", //rxJava