Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPager2-PIP模式下的片段更改_Android_Exoplayer2.x_Android Viewpager2 - Fatal编程技术网

Android ViewPager2-PIP模式下的片段更改

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

我必须开发一个应用程序,有一个视频列表,也支持PIP模式。我使用了带有垂直方向和ExoPlayer的ViewPager2。FragmentStateAdapter用于ViewPager2适配器

问题。

  • 当屏幕进入PIP模式时,片段自动更改。ViewPager的打开页面功能已选定,视频已更改
  • 当PIP全屏显示时,多个视频同时播放。就像有多个玩家在工作一样
  • 打开键盘后,屏幕上还会显示下一个片段
  • 代码-

  • 显示
  • 2。家庭活动

    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)
    
        }
        }