diff --git a/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt b/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt index df80fc3..0ab887d 100644 --- a/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt @@ -64,6 +64,7 @@ class MainActivity : AppViewsActivity(), OnTabS viewPager2.isUserInputEnabled = false viewPager2.setPageTransformer { _, _ -> } + viewPager2.offscreenPageLimit } override fun ViewBinding.initListeners() { diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt index c75b67d..9c3fd92 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/HomeFragment.kt @@ -8,6 +8,7 @@ import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks +import androidx.fragment.app.findFragment import androidx.fragment.app.viewModels import androidx.viewpager2.widget.ViewPager2 import com.ama.core.architecture.appBase.AppViewsFragment @@ -15,6 +16,7 @@ import com.ama.core.architecture.appBase.OnFragmentBackgroundListener import com.ama.core.architecture.util.setDataOrAdapter import com.ama.core.common.util.asSafe import com.gamedog.vididin.main.fragments.home.HomeFragmentStateAdapter +import com.gamedog.vididin.main.fragments.home.fragment.HomeItemFragment import com.gamedog.vididin.main.interfaces.OnSwitchTabListener import com.gamedog.vididin.main.interfaces.OnTabStyleListener import dagger.hilt.android.AndroidEntryPoint @@ -31,9 +33,6 @@ class HomeFragment : AppViewsFragment(), OnSwit override val mViewModel: ViewModel by viewModels() override var isBackgroundBright: Boolean = true - - - //private val mViewPagerAdapter by lazy { HomeFragmentStateAdapter(this) } private val mViewPagerAdapter by lazy { HomeFragmentStateAdapter(this) } override fun inflateViewBinding( @@ -60,14 +59,16 @@ class HomeFragment : AppViewsFragment(), OnSwit override fun onPageSelected(position: Int) { super.onPageSelected(position) setHomeTabStyle(mViewPagerAdapter.getFragmentByIndex(position)) + val curFragment: HomeItemFragment = mViewPagerAdapter.getFragmentByIndex(position) as HomeItemFragment + curFragment.loadVideo() } }) childFragmentManager.registerFragmentLifecycleCallbacks(object : FragmentLifecycleCallbacks() { - override fun onFragmentResumed(fm: FragmentManager, f: Fragment) { - super.onFragmentResumed(fm, f) - setHomeTabStyle(f) + override fun onFragmentResumed(fm: FragmentManager, fra: Fragment) { + super.onFragmentResumed(fm, fra) + setHomeTabStyle(fra) } }, false) } 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 86e8564..3040ab0 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 @@ -2,7 +2,6 @@ package com.gamedog.vididin.main.fragments.home.fragment import android.os.Bundle -import android.provider.MediaStore.Audio.Playlists.Members.PLAYLIST_ID import android.view.LayoutInflater import android.view.ViewGroup import androidx.annotation.NonNull @@ -14,15 +13,13 @@ import com.gamedog.vididin.widget.MyPlayerControlView import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.PlayerConstants import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener -import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.YouTubePlayerListener -import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.options.IFramePlayerOptions +import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.utils.loadOrCueVideo import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView -import kotlin.apply -import kotlin.toString import com.gamedog.vididin.databinding.VididinappFeatureHomeItemLayoutBinding as ViewBinding class HomeItemFragment : AppViewsEmptyViewModelFragment() { + private var mPlayerView: YouTubePlayerView? = null private var mIsStared = false private var mPlayer: YouTubePlayer? = null private var mVideoData: YoutubeVideo? = null @@ -33,47 +30,39 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { container: ViewGroup?, ) = ViewBinding.inflate(inflater, container, false) - override fun ViewBinding.initViews() { + override fun ViewBinding.initViews() { tvPlay.setOnClickListener { mPlayer?.play() } - tvPause.setOnClickListener { mPlayer?.pause() //mPlayer.seekTo() mPlayer?.setPlaybackRate(PlayerConstants.PlaybackRate.RATE_2) } - - - - tvVideoFrom.text = "@From-" + arguments?.getLong(KEY_ID).toString() tvVideoIntro.text = "Introduce-" + arguments?.getLong(KEY_ID).toString() popMenu.setMenuList( mutableListOf( - PopMenuIconView.MenuItem(R.mipmap.home_menu_1) { + PopMenuIconView.MenuItem(R.mipmap.home_menu_1) { - }, - PopMenuIconView.MenuItem(R.mipmap.home_menu_2) { + }, + PopMenuIconView.MenuItem(R.mipmap.home_menu_2) { - }, - PopMenuIconView.MenuItem(R.mipmap.home_menu_3) { + }, + PopMenuIconView.MenuItem(R.mipmap.home_menu_3) { - }, - PopMenuIconView.MenuItem(R.mipmap.home_menu_4) { + }, + PopMenuIconView.MenuItem(R.mipmap.home_menu_4) { - } - )) - - lifecycle.addObserver(youtubePlayerView) - youtubePlayerView.enableBackgroundPlayback(false) - youtubePlayerView.enableAutomaticInitialization = false + } + )) } fun initAndStartPlay() { + /* val youtubePlayerView: YouTubePlayerView = binding?.youtubePlayerView!! val iFramePlayerOptions = IFramePlayerOptions.Builder(requireContext()) @@ -150,21 +139,51 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { } - }, iFramePlayerOptions) + }, iFramePlayerOptions)*/ - youtubePlayerView.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() { + + } + + override fun ViewBinding.initListeners() { + ivStar.setOnClickListener { + mIsStared = !mIsStared + ivStar.setImageResource(if (mIsStared) R.mipmap.home_star else R.mipmap.home_star_undo) + } + + } + + override fun ViewBinding.initObservers() { + + } + + + + + fun loadVideo() { + if (null == mPlayerView) { + mPlayerView = YouTubePlayerView(requireContext()) + binding!!.playerContainer.addView(mPlayerView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + lifecycle.addObserver(mPlayerView!!) + mPlayerView?.enableAutomaticInitialization = true + } + + + val playerView = mPlayerView + playerView!!.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() { override fun onReady(@NonNull youTubePlayer: YouTubePlayer) { mPlayer = youTubePlayer - //val playerUiController = DefaultPlayerUiController(youtubePlayerView, youTubePlayer) - val playerUiController = MyPlayerControlView(youtubePlayerView, youTubePlayer) - youtubePlayerView.setCustomPlayerUi(playerUiController.rootView) + val playerUiController = MyPlayerControlView(playerView, youTubePlayer) + playerView.setCustomPlayerUi(playerUiController.rootView) if (mVideoData != null && !mVideoData?.id.isNullOrEmpty()) { - youTubePlayer.loadVideo(mVideoData!!.id, 0f) + youTubePlayer.loadOrCueVideo( + lifecycle, + mVideoData!!.id, 0f + ) } } @@ -185,23 +204,6 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { }) } - override fun ViewBinding.initListeners() { - ivStar.setOnClickListener { - mIsStared = !mIsStared - ivStar.setImageResource(if (mIsStared) R.mipmap.home_star else R.mipmap.home_star_undo) - } - - } - - override fun ViewBinding.initObservers() { - try { - initAndStartPlay() - } catch (e: Exception) { - e.printStackTrace() - } - } - - companion object { diff --git a/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml b/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml index cc310b2..fdf0752 100644 --- a/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml +++ b/app/src/main/res/layout/vididinapp_feature_home_item_layout.xml @@ -11,8 +11,8 @@ android:clickable="true" /> -