Android ViewPager2-PIP模式下的片段更改
我必须开发一个应用程序,有一个视频列表,也支持PIP模式。我使用了带有垂直方向和ExoPlayer的ViewPager2。FragmentStateAdapter用于ViewPager2适配器 问题。Android ViewPager2-PIP模式下的片段更改,android,exoplayer2.x,android-viewpager2,Android,Exoplayer2.x,Android Viewpager2,我必须开发一个应用程序,有一个视频列表,也支持PIP模式。我使用了带有垂直方向和ExoPlayer的ViewPager2。FragmentStateAdapter用于ViewPager2适配器 问题。 当屏幕进入PIP模式时,片段自动更改。ViewPager的打开页面功能已选定,视频已更改 当PIP全屏显示时,多个视频同时播放。就像有多个玩家在工作一样 打开键盘后,屏幕上还会显示下一个片段 代码- 显示 2。家庭活动 override fun onUserLeaveHint() { s
override fun onUserLeaveHint() {
super.onUserLeaveHint()
if (fragment != null && isPIPSupport() && !isInPictureInPictureMode) {
enterPIPMode()
}
}
fun enterPIPMode() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
&& packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
) {
val aspectRatio = Rational(
3, 4
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val params =
PictureInPictureParams.Builder()
.setAspectRatio(aspectRatio)
.build()
enterPictureInPictureMode(params)
} else {
enterPictureInPictureMode()
}
}
}
3。适配器
class ViewPagerStateAdapter(
private val productList: ArrayList<Product>,
private val fragmentActivity: Fragment, val frgManager: FragmentManager
) : FragmentStateAdapter(fragmentActivity) {
override fun getItemCount(): Int {
return productList.size
}
override fun createFragment(position: Int): Fragment {
return VideoDetailFragment.newInstance(position)
}
}
private fun setupViewPager() {
liveShowAdapter = ViewPagerStateAdapter(SLPList.productList, this, childFragmentManager)
mLiveShowViewPager?.apply {
adapter = liveShowAdapter
offscreenPageLimit =
3
registerOnPageChangeCallback(registerChangeCallBack)
}
}
private fun setupViewPager() {
liveShowAdapter = ViewPagerStateAdapter(SLPList.productList, this, childFragmentManager)
mLiveShowViewPager?.apply {
adapter = liveShowAdapter
offscreenPageLimit =
3
registerOnPageChangeCallback(registerChangeCallBack)
}
}