动态添加 playView
This commit is contained in:
parent
ef03bda916
commit
162ad5288a
|
|
@ -64,6 +64,7 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
|
|
||||||
viewPager2.isUserInputEnabled = false
|
viewPager2.isUserInputEnabled = false
|
||||||
viewPager2.setPageTransformer { _, _ -> }
|
viewPager2.setPageTransformer { _, _ -> }
|
||||||
|
viewPager2.offscreenPageLimit
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun ViewBinding.initListeners() {
|
override fun ViewBinding.initListeners() {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import androidx.core.view.updatePadding
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks
|
import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks
|
||||||
|
import androidx.fragment.app.findFragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.viewpager2.widget.ViewPager2
|
import androidx.viewpager2.widget.ViewPager2
|
||||||
import com.ama.core.architecture.appBase.AppViewsFragment
|
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.architecture.util.setDataOrAdapter
|
||||||
import com.ama.core.common.util.asSafe
|
import com.ama.core.common.util.asSafe
|
||||||
import com.gamedog.vididin.main.fragments.home.HomeFragmentStateAdapter
|
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.OnSwitchTabListener
|
||||||
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
@ -31,9 +33,6 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
|
||||||
override val mViewModel: ViewModel by viewModels()
|
override val mViewModel: ViewModel by viewModels()
|
||||||
override var isBackgroundBright: Boolean = true
|
override var isBackgroundBright: Boolean = true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//private val mViewPagerAdapter by lazy { HomeFragmentStateAdapter(this) }
|
|
||||||
private val mViewPagerAdapter by lazy { HomeFragmentStateAdapter(this) }
|
private val mViewPagerAdapter by lazy { HomeFragmentStateAdapter(this) }
|
||||||
|
|
||||||
override fun inflateViewBinding(
|
override fun inflateViewBinding(
|
||||||
|
|
@ -60,14 +59,16 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
super.onPageSelected(position)
|
super.onPageSelected(position)
|
||||||
setHomeTabStyle(mViewPagerAdapter.getFragmentByIndex(position))
|
setHomeTabStyle(mViewPagerAdapter.getFragmentByIndex(position))
|
||||||
|
val curFragment: HomeItemFragment = mViewPagerAdapter.getFragmentByIndex(position) as HomeItemFragment
|
||||||
|
curFragment.loadVideo()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
childFragmentManager.registerFragmentLifecycleCallbacks(object :
|
childFragmentManager.registerFragmentLifecycleCallbacks(object :
|
||||||
FragmentLifecycleCallbacks() {
|
FragmentLifecycleCallbacks() {
|
||||||
override fun onFragmentResumed(fm: FragmentManager, f: Fragment) {
|
override fun onFragmentResumed(fm: FragmentManager, fra: Fragment) {
|
||||||
super.onFragmentResumed(fm, f)
|
super.onFragmentResumed(fm, fra)
|
||||||
setHomeTabStyle(f)
|
setHomeTabStyle(fra)
|
||||||
}
|
}
|
||||||
}, false)
|
}, false)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.gamedog.vididin.main.fragments.home.fragment
|
||||||
|
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.MediaStore.Audio.Playlists.Members.PLAYLIST_ID
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.annotation.NonNull
|
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.PlayerConstants
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer
|
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener
|
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.YouTubePlayerListener
|
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.utils.loadOrCueVideo
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.options.IFramePlayerOptions
|
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
|
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
|
||||||
import kotlin.apply
|
|
||||||
import kotlin.toString
|
|
||||||
import com.gamedog.vididin.databinding.VididinappFeatureHomeItemLayoutBinding as ViewBinding
|
import com.gamedog.vididin.databinding.VididinappFeatureHomeItemLayoutBinding as ViewBinding
|
||||||
|
|
||||||
|
|
||||||
class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
|
private var mPlayerView: YouTubePlayerView? = null
|
||||||
private var mIsStared = false
|
private var mIsStared = false
|
||||||
private var mPlayer: YouTubePlayer? = null
|
private var mPlayer: YouTubePlayer? = null
|
||||||
private var mVideoData: YoutubeVideo? = null
|
private var mVideoData: YoutubeVideo? = null
|
||||||
|
|
@ -33,22 +30,17 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
) = ViewBinding.inflate(inflater, container, false)
|
) = ViewBinding.inflate(inflater, container, false)
|
||||||
|
|
||||||
override fun ViewBinding.initViews() {
|
|
||||||
|
|
||||||
|
override fun ViewBinding.initViews() {
|
||||||
tvPlay.setOnClickListener {
|
tvPlay.setOnClickListener {
|
||||||
mPlayer?.play()
|
mPlayer?.play()
|
||||||
}
|
}
|
||||||
|
|
||||||
tvPause.setOnClickListener {
|
tvPause.setOnClickListener {
|
||||||
mPlayer?.pause()
|
mPlayer?.pause()
|
||||||
//mPlayer.seekTo()
|
//mPlayer.seekTo()
|
||||||
mPlayer?.setPlaybackRate(PlayerConstants.PlaybackRate.RATE_2)
|
mPlayer?.setPlaybackRate(PlayerConstants.PlaybackRate.RATE_2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tvVideoFrom.text = "@From-" + arguments?.getLong(KEY_ID).toString()
|
tvVideoFrom.text = "@From-" + arguments?.getLong(KEY_ID).toString()
|
||||||
tvVideoIntro.text = "Introduce-" + arguments?.getLong(KEY_ID).toString()
|
tvVideoIntro.text = "Introduce-" + arguments?.getLong(KEY_ID).toString()
|
||||||
|
|
||||||
|
|
@ -67,13 +59,10 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
|
|
||||||
}
|
}
|
||||||
))
|
))
|
||||||
|
|
||||||
lifecycle.addObserver(youtubePlayerView)
|
|
||||||
youtubePlayerView.enableBackgroundPlayback(false)
|
|
||||||
youtubePlayerView.enableAutomaticInitialization = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun initAndStartPlay() {
|
fun initAndStartPlay() {
|
||||||
|
/*
|
||||||
val youtubePlayerView: YouTubePlayerView = binding?.youtubePlayerView!!
|
val youtubePlayerView: YouTubePlayerView = binding?.youtubePlayerView!!
|
||||||
|
|
||||||
val iFramePlayerOptions = IFramePlayerOptions.Builder(requireContext())
|
val iFramePlayerOptions = IFramePlayerOptions.Builder(requireContext())
|
||||||
|
|
@ -150,21 +139,51 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}, 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) {
|
override fun onReady(@NonNull youTubePlayer: YouTubePlayer) {
|
||||||
mPlayer = youTubePlayer
|
mPlayer = youTubePlayer
|
||||||
|
|
||||||
//val playerUiController = DefaultPlayerUiController(youtubePlayerView, youTubePlayer)
|
val playerUiController = MyPlayerControlView(playerView, youTubePlayer)
|
||||||
val playerUiController = MyPlayerControlView(youtubePlayerView, youTubePlayer)
|
playerView.setCustomPlayerUi(playerUiController.rootView)
|
||||||
youtubePlayerView.setCustomPlayerUi(playerUiController.rootView)
|
|
||||||
|
|
||||||
if (mVideoData != null && !mVideoData?.id.isNullOrEmpty()) {
|
if (mVideoData != null && !mVideoData?.id.isNullOrEmpty()) {
|
||||||
youTubePlayer.loadVideo(mVideoData!!.id, 0f)
|
youTubePlayer.loadOrCueVideo(
|
||||||
|
lifecycle,
|
||||||
|
mVideoData!!.id, 0f
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -185,23 +204,6 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
companion object {
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
|
<FrameLayout
|
||||||
android:id="@+id/youtube_player_view"
|
android:id="@+id/player_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"/>
|
android:layout_gravity="center"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue