diff --git a/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt index 58df5641c0..37bf46a287 100644 --- a/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt @@ -9,6 +9,7 @@ import android.widget.LinearLayout import android.widget.RelativeLayout import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.fragment.app.FragmentTransaction import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.gh.base.BaseRecyclerViewHolder @@ -263,11 +264,19 @@ class PackageCheckDialogFragment : BaseDialogFragment() { var dialogFragment = activity.supportFragmentManager.findFragmentByTag(PackageCheckDialogFragment::class.java.simpleName) as? PackageCheckDialogFragment if (dialogFragment == null) { dialogFragment = PackageCheckDialogFragment() - } - dialogFragment.packageDialogEntity = packageDialogEntity - dialogFragment.callBack = callBack + dialogFragment.packageDialogEntity = packageDialogEntity + dialogFragment.callBack = callBack + + dialogFragment.show(activity.supportFragmentManager, PackageCheckDialogFragment::class.java.simpleName) + } else { + dialogFragment.packageDialogEntity = packageDialogEntity + dialogFragment.callBack = callBack + + val transaction: FragmentTransaction = activity.supportFragmentManager.beginTransaction() + transaction.show(dialogFragment) + transaction.commit() + } - dialogFragment.show(activity.supportFragmentManager, PackageCheckDialogFragment::class.java.simpleName) } fun isAllPackageInstalled(packageDialogEntity: PackageDialogEntity): Boolean { diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt index dddb0e3fd3..112cfc8f7a 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoAdapter.kt @@ -9,6 +9,7 @@ import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.gh.base.BaseActivity import com.gh.common.constant.Config import com.gh.common.constant.Constants @@ -39,7 +40,7 @@ import com.squareup.picasso.Picasso import kotlinx.android.synthetic.main.layout_video_detail_surface.view.* import java.util.* -class VideoAdapter(val mContext: Context, val mRecyclerView: RecyclerView, val mViewModel: VideoDetailContainerViewModel) +class VideoAdapter(val mContext: Context, val mRecyclerView: RecyclerView, val refreshLayout: SwipeRefreshLayout, val mViewModel: VideoDetailContainerViewModel) : RecyclerView.Adapter(), IExposable { var videoList = arrayListOf() var isVisible = false//fragment是否可见 @@ -86,6 +87,7 @@ class VideoAdapter(val mContext: Context, val mRecyclerView: RecyclerView, val m videoView.updateThumb(videoList[position].getThumb()) videoView.updateMuteStatus() videoView.fullscreenButton.setOnClickListener { + if (refreshLayout.isRefreshing) return@setOnClickListener if (mOrientationUtils.isLand == 0) { videoView.recordMta("进入全屏") MtaHelper.onEvent("视频详情", "进入全屏", "${videoList[position].title}(${videoList[position].id})") @@ -93,14 +95,14 @@ class VideoAdapter(val mContext: Context, val mRecyclerView: RecyclerView, val m } videoView.hideAllButton(true) mOrientationUtils.resolveByClick() - val fullVideoPlayer = videoView.startWindowFullscreen(mContext, true, true) as DetailPlayerView - fullVideoPlayer.observeVolume(mContext as AppCompatActivity) - fullVideoPlayer.setViewModel(mViewModel) - fullVideoPlayer.hideAllButton(true) - fullVideoPlayer.updateViewDetail(videoList[position]) - fullVideoPlayer.updateMuteStatus() + val fullVideoPlayer = videoView.startWindowFullscreen(mContext, true, true) as? DetailPlayerView + fullVideoPlayer?.observeVolume(mContext as AppCompatActivity) + fullVideoPlayer?.setViewModel(mViewModel) + fullVideoPlayer?.hideAllButton(true) + fullVideoPlayer?.updateViewDetail(videoList[position]) + fullVideoPlayer?.updateMuteStatus() //金进入全屏后直接播放 - if (fullVideoPlayer.currentState == GSYVideoView.CURRENT_STATE_PAUSE) { + if (fullVideoPlayer?.currentState == GSYVideoView.CURRENT_STATE_PAUSE) { fullVideoPlayer.setCurrentPosition(videoView.getCurrentPosition()) fullVideoPlayer.onVideoResume() } diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt index 729f72dd0b..02f3abd295 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt @@ -120,7 +120,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mViewModel.videoList.observeNonNull(this) { hideNetworkErrorView() if (!::mAdapter.isInitialized) { - mAdapter = VideoAdapter(requireContext(), recyclerview, mViewModel) + mAdapter = VideoAdapter(requireContext(), recyclerview, refresh, mViewModel) mExposureListener = ExposureListener(this, mAdapter) recyclerview.addOnScrollListener(mExposureListener!!) recyclerview.adapter = mAdapter @@ -188,8 +188,8 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mViewModel.followVideoInfo.observeNonNull(this) { updateAllFollowDatas(it.user.id ?: "", it.me.isFollower) } - mViewModel.refreshFinish.observeNonNull(this){ - if (it){ + mViewModel.refreshFinish.observeNonNull(this) { + if (it) { refresh.isRefreshing = false } } diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt index 196cad298f..16ef0ad21b 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt @@ -178,10 +178,21 @@ class VideoDetailContainerViewModel(application: Application) : AndroidViewModel } page++ //下拉刷新清除列表数据 - if (!isLoadNext) { +// if (!isLoadNext) { +// videoList.value?.clear() +// } +// mergeVideoList(data, isLoadNext) + if (isLoadNext) { + mergeVideoList(data, isLoadNext) + } else if (!isLoadNext && mRecyclerViewRef?.get()?.computeVerticalScrollOffset() == 0) { + //下拉刷新并且列表没有滚动清除列表数据,数据发生变化 videoList.value?.clear() + mergeVideoList(data, isLoadNext) + } else { + //下拉刷新并且列表滚动中关闭下拉刷新动画,数据不变 + refreshFinish.postValue(true) } - mergeVideoList(data, isLoadNext) + mIsFirstLoad = false }