要实现在Androidx Kotlin中使用ViewPager2和动态Fragment来实现上下滑动播放功能,可以按照以下步骤进行:

  1. 首先,确保你的项目中已经添加了ViewPager2和ExoPlayer的依赖。可以在项目的build.gradle文件中添加以下依赖:
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'
  1. 创建一个包含ViewPager2的布局文件,例如activity_main.xml。在布局文件中添加ViewPager2组件:
<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. 创建一个动态Fragment,例如VideoFragment.kt,用于显示视频内容。在该Fragment中,可以使用ExoPlayer来加载和播放视频。
class VideoFragment : Fragment() {
    private lateinit var playerView: PlayerView
    private lateinit var exoPlayer: SimpleExoPlayer

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_video, container, false)
        playerView = view.findViewById(R.id.playerView)
        return view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        exoPlayer = SimpleExoPlayer.Builder(requireContext()).build()
        playerView.player = exoPlayer
    }

    override fun onDestroyView() {
        super.onDestroyView()
        exoPlayer.release()
    }
}
  1. 创建一个FragmentStateAdapter,用于提供ViewPager2的页面。在MyPagerAdapter.kt中,可以创建一个列表来保存所有的视频Fragment,并实现必要的方法。
class MyPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) : FragmentStateAdapter(fragmentManager, lifecycle) {
    private val fragments = mutableListOf<Fragment>()

    fun setFragments(newFragments: List<Fragment>) {
        fragments.clear()
        fragments.addAll(newFragments)
        notifyDataSetChanged()
    }

    override fun getItemCount(): Int {
        return fragments.size
    }

    override fun createFragment(position: Int): Fragment {
        return fragments[position]
    }
}
  1. 在MainActivity中,初始化ViewPager2和Adapter,并设置Adapter到ViewPager2中:
class MainActivity : AppCompatActivity() {
    private lateinit var viewPager: ViewPager2
    private lateinit var pagerAdapter: MyPagerAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        viewPager = findViewById(R.id.viewPager)
        pagerAdapter = MyPagerAdapter(supportFragmentManager, lifecycle)
        viewPager.adapter = pagerAdapter

        val fragments = listOf(VideoFragment(), VideoFragment(), VideoFragment())
        pagerAdapter.setFragments(fragments)
    }
}

现在,你可以在ViewPager2中上下滑动来切换不同的视频播放页面。每个页面都有一个独立的ExoPlayer实例来加载和播放视频

Androidx kotlin 使用Viewpager2+动态Fragment+ExoPlayer实现上下滑动播放功能

原文地址: https://www.cveoy.top/t/topic/iz6h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录