From a77f9709d8160be669a01372520f86dbf19414c7 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Tue, 13 Jan 2026 18:57:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20togglePlayingState2(isPlay?= =?UTF-8?q?ing)=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/fragment/HomeItemFragment.kt | 79 ++++++++++++++----- 1 file changed, 60 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt index c93e18a..a380811 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt @@ -3,6 +3,8 @@ package com.gamedog.vididin.main.fragments.home.fragment import android.graphics.Bitmap import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.view.Gravity import android.view.LayoutInflater import android.view.View @@ -35,12 +37,15 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { private var mPlayerView: YouTubePlayerView? = null private var mPlayer: YouTubePlayer? = null private var mVideoData: YoutubeVideo? = null + @Volatile private var mIsPlaying: Boolean = false private var mIsIntroExpand: Boolean = false private var mCurPlayedSecond: Float = 0F private var mTotalDuration: Float = 0F private val mTickerTimer = TickerTimer() + private val mThumbHandler = Handler(Looper.getMainLooper()) + override fun inflateViewBinding( inflater: LayoutInflater, @@ -193,29 +198,14 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { } } - - private fun generateThumbAndSet() { - // capturePlayerView And Show as thumb - mPlayerView?.let { - mMaskBitmap?.recycle() - mMaskBitmap = null - mMaskBitmap = AndroidUtil.getThumbOfView(it) - mMaskBitmap?.let { - binding?.ivMask?.setImageBitmap(mMaskBitmap) - } - } + private fun togglePlayingState(isPlaying: Boolean) { + if (true) togglePlayingState1(isPlaying) else togglePlayingState2(isPlaying) } - private fun togglePlayingState(isPlaying: Boolean) { + private fun togglePlayingState1(isPlaying: Boolean) { if (mIsPlaying != isPlaying) { mIsPlaying = isPlaying - if (!mIsPlaying) { - /*binding?.circlePb?.let { - it.postDelayed({ - generateThumbAndSet() - }, 500) - }*/ - } else { + if (mIsPlaying) { binding?.circlePb?.isVisible = false } @@ -234,6 +224,57 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { } } + private fun switchState2Play() { + mThumbHandler.removeCallbacksAndMessages(null) + + binding?.circlePb?.isVisible = false + binding?.ivMask?.isVisible = false + binding?.playerContainer?.isVisible = true + hidePlayIconAnim() + mTickerTimer.start() + } + + private fun switchState2Pause() { + binding?.ivMask?.isVisible = true + binding?.playerContainer?.isVisible = false + showPlayIconAnim() + mTickerTimer.pause() + } + + private fun togglePlayingState2(isPlaying: Boolean) { + if (mIsPlaying != isPlaying) { + mIsPlaying = isPlaying + + if (isPlaying) { + switchState2Play() + } else { + mThumbHandler.removeCallbacksAndMessages(null) + binding?.ivMask?.setImageBitmap(null) + mThumbHandler.post { + if (mPlayerView != null) { + // hide others UI + AndroidUtil.getThumbOfView1(requireActivity().window, mPlayerView!!, { bitmap -> + if (!isPlaying) { + val preBitmap = mMaskBitmap + mMaskBitmap = bitmap + + if (mMaskBitmap != null) { + binding?.ivMask?.setImageBitmap(mMaskBitmap) + preBitmap?.recycle() + } + binding?.playIcon?.post { switchState2Pause() } + } + }) + } else { + binding?.playIcon?.post { switchState2Pause() } + } + } + } + + sendPlayStopStatistic(mIsPlaying) + } + } + override fun onResume() { super.onResume() mPlayer?.play()