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 281de4cf40..dd72043c95 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 @@ -10,7 +10,6 @@ import android.view.* import android.widget.ListView import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.utilcode.util.OverlayViewUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.ui.leftmenu.model.LeftMenuModel import com.mogo.och.taxi.passenger.ui.video.TaxiPassengerMogoConsultView 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 56a6cc186c..c3082e0403 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 @@ -2,10 +2,10 @@ package com.mogo.och.taxi.passenger.ui.video import android.content.Context import android.graphics.Bitmap +import android.graphics.Color import android.graphics.drawable.BitmapDrawable import android.util.AttributeSet import android.view.LayoutInflater -import android.view.View import android.widget.RelativeLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView @@ -13,19 +13,21 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.transition.Transition -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselLayoutManager import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselZoomPostLayoutListener import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CenterScrollListener -import com.mogo.och.taxi.passenger.widget.ConsultVideoPlayer import com.mogo.och.taxi.passenger.utils.blur.GlideBlurTransform +import com.mogo.och.taxi.passenger.widget.ConsultVideoPlayer +import com.mogo.och.taxi.passenger.widget.indicator.IndicatorView +import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorOrientation +import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorSlideMode +import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorStyle import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack import com.shuyu.gsyvideoplayer.video.base.GSYVideoView -import io.reactivex.disposables.Disposable import java.util.* +import kotlin.math.floor /** @@ -45,40 +47,40 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { private lateinit var rvVideoPlaylist: RecyclerView + private lateinit var indicatorView: IndicatorView private lateinit var clContain: ConstraintLayout private fun initView(context: Context) { - d(SceneConstant.M_TAXI_P + "pageStopCenterScrollListener", "initView:$visibility") - d(SceneConstant.M_TAXI_P + TAG, "initView") LayoutInflater.from(context).inflate(R.layout.taxi_p_arrived_mogo_consult, this, true) rvVideoPlaylist = findViewById(R.id.rv_video_playlist) + indicatorView = findViewById(R.id.indicatorView) clContain = findViewById(R.id.cl_contain) val arrayListOf = ArrayList() - arrayListOf.add(TaxiPassengerVideoPlay("https://gohome-1253308323.cos.ap-beijing.myqcloud.com/McTk51586843620689.mp4","https://gohome-1253308323.cos.ap-beijing.myqcloud.com/McTk51586843620689.png","title")) - arrayListOf.add(TaxiPassengerVideoPlay("https://gohome-1253308323.cos.ap-beijing.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4","https://gohome-1253308323.cos.ap-beijing.myqcloud.com/12111.jpg","title")) - arrayListOf.add(TaxiPassengerVideoPlay("https://gohome-1253308323.cos.ap-beijing.myqcloud.com/McTk51586843620689.mp4","https://gohome-1253308323.cos.ap-beijing.myqcloud.com/McTk51586843620689.png","title")) - arrayListOf.add(TaxiPassengerVideoPlay("https://gohome-1253308323.cos.ap-beijing.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4","https://gohome-1253308323.cos.ap-beijing.myqcloud.com/12111.jpg","title")) - arrayListOf.add(TaxiPassengerVideoPlay("https://gohome-1253308323.cos.ap-beijing.myqcloud.com/McTk51586843620689.mp4","https://gohome-1253308323.cos.ap-beijing.myqcloud.com/McTk51586843620689.png","title")) - arrayListOf.add(TaxiPassengerVideoPlay("https://gohome-1253308323.cos.ap-beijing.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4","https://gohome-1253308323.cos.ap-beijing.myqcloud.com/12111.jpg","title")) -//TaxiPassengerMogoMoviesView + arrayListOf.add(TaxiPassengerVideoPlay("https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708409810/20210610重新排版3屏.m4v","https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969579713/三屏.png","重新排版")) + arrayListOf.add(TaxiPassengerVideoPlay("https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v","https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png","大运会")) + arrayListOf.add(TaxiPassengerVideoPlay("https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708554279/红旗车队.m4v","https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969553174/红旗重新排版.png","红旗车队")) + arrayListOf.add(TaxiPassengerVideoPlay("https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708596763/全车型混剪增加红旗车队.m4v","https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969511280/车队.png","全车型混剪增加红旗车队")) val recyclerVideoAdapter = RecyclerVideoAdapter(context, arrayListOf) val carouselLayoutManager = CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL, true) carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener ()) carouselLayoutManager.maxVisibleItems = 1 + indicatorView.notifyDataChanged(arrayListOf.size) + indicatorView.setSlideMode(IndicatorSlideMode.SCALE) + indicatorView.setOrientation(IndicatorOrientation.INDICATOR_HORIZONTAL) + indicatorView.setIndicatorStyle(IndicatorStyle.ROUND_RECT) + indicatorView.setSliderColor(Color.parseColor("#80FFFFFF"), Color.parseColor("#2972FF")) + indicatorView.setSliderWidth(14f, 90f) + indicatorView.setSliderHeight(14f) rvVideoPlaylist.addOnScrollListener(object: CenterScrollListener() { - var currentPausePlayer = -1 - var prePlayer:ConsultVideoPlayer?=null + var prePlayerPosition = 0 override fun pageSelect(recyclerView: RecyclerView?, newState: Int) { //播放视频 - val centerItemPosition: Int = carouselLayoutManager.getCenterItemPosition() + val centerItemPosition: Int = carouselLayoutManager.centerItemPosition val player = carouselLayoutManager.findViewByPosition(centerItemPosition) + indicatorView.onPageSelected(centerItemPosition) if(player is ConsultVideoPlayer){ - if(currentPausePlayer==-1||currentPausePlayer!=centerItemPosition) { - if(prePlayer!=null){ - prePlayer?.onVideoReset() - prePlayer = null - } + if(prePlayerPosition!=centerItemPosition) { if(player.currentState==GSYVideoView.CURRENT_STATE_PAUSE){ player.onVideoReset() player.startPlayLogic() @@ -91,6 +93,7 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { player.onVideoResume(false) } } + prePlayerPosition = centerItemPosition } override fun pageStop() { @@ -98,12 +101,22 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { val player = carouselLayoutManager.findViewByPosition(centerItemPosition) if(player is ConsultVideoPlayer){ player.onVideoPause() - prePlayer = player; - currentPausePlayer = centerItemPosition } } }) + carouselLayoutManager.addOnDargAutoDiffListener { adapterPosition, currentPosition -> + val fl = adapterPosition - floor(adapterPosition) + var currentIndex = currentPosition + if(fl>0.5){ + if(currentPosition==0){ + currentIndex = rvVideoPlaylist.adapter!!.itemCount + }else { + currentIndex -= 1 + } + } + indicatorView.onPageScrolled(currentIndex, fl, 0) + } rvVideoPlaylist.layoutManager = carouselLayoutManager rvVideoPlaylist.setHasFixedSize(true) rvVideoPlaylist.adapter = recyclerVideoAdapter @@ -134,20 +147,21 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { clContain.background = BitmapDrawable(context.resources, resource) } }) - - player.setVideoAllCallBack(object : GSYSampleCallBack() { - override fun onAutoComplete(url: String?, vararg objects: Any?) { - player.onVideoReset() - val itemCount = rvVideoPlaylist.adapter?.itemCount - itemCount?.let { - if (centerItemPosition == itemCount - 1) { - rvVideoPlaylist.smoothScrollToPosition(0) - } else { - rvVideoPlaylist.smoothScrollToPosition(centerItemPosition + 1) + if(player.getVideoAllCallBack()==null) { + player.setVideoAllCallBack(object : GSYSampleCallBack() { + override fun onAutoComplete(url: String?, vararg objects: Any?) { + player.onVideoReset() + val itemCount = rvVideoPlaylist.adapter?.itemCount + itemCount?.let { + if (centerItemPosition == itemCount - 1) { + rvVideoPlaylist.smoothScrollToPosition(0) + } else { + rvVideoPlaylist.smoothScrollToPosition(centerItemPosition + 1) + } } } - } - }) + }) + } } @@ -160,21 +174,34 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { if (player is ConsultVideoPlayer) { if(hasWindowFocus){// 获取焦点两种情况 // 恢复播放和开始播放 - when (player.currentState) { - GSYVideoView.CURRENT_STATE_PAUSE -> { - player.onVideoResume(false) - } - else -> { - val recyclerVideoAdapter = - rvVideoPlaylist.adapter as RecyclerVideoAdapter - setBackageAndPlayNext(recyclerVideoAdapter.getItemByPosition(centerItemPosition), player, centerItemPosition) - player.startPlayLogic() + if(player.isIfCurrentIsFullscreen){// 全屏了 + + }else { + when (player.currentState) { + GSYVideoView.CURRENT_STATE_PAUSE -> { + player.onVideoResume(false) + } + GSYVideoView.CURRENT_STATE_PLAYING -> { + } + else -> { + val recyclerVideoAdapter = + rvVideoPlaylist.adapter as RecyclerVideoAdapter + setBackageAndPlayNext( + recyclerVideoAdapter.getItemByPosition(centerItemPosition), + player, centerItemPosition + ) + player.startPlayLogic() + } } } }else { // 离开应用 暂停视频 // 关闭 onDetachedFromWindow 会reset - player.onVideoPause() + if(player.isIfCurrentIsFullscreen){// 全屏了 + + }else { + player.onVideoPause() + } } } @@ -188,13 +215,11 @@ class TaxiPassengerMogoMoviesView :RelativeLayout { val carouselLayoutManager = rvVideoPlaylist.layoutManager as CarouselLayoutManager val centerItemPosition: Int = carouselLayoutManager.centerItemPosition val player = carouselLayoutManager.findViewByPosition(centerItemPosition) - d(SceneConstant.M_TAXI_P + "pageStopCenterScrollListener", "onDetachedFromWindow:$visibility---$player---${centerItemPosition}") player?.let { if(player is ConsultVideoPlayer){ - player.onVideoReset() + player.release() } } - } companion object {