要在Android中使用ViewPager2和Fragment来播放视频,可以按照以下步骤进行操作:

  1. 在build.gradle文件中添加ViewPager2和ExoPlayer的依赖项:
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.google.android.exoplayer:exoplayer:2.14.1'
  1. 创建一个包含ViewPager2的布局文件,例如activity_main.xml:
<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. 创建一个VideoFragment类来显示视频:
class VideoFragment : Fragment() {

    private lateinit var player: SimpleExoPlayer

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

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val videoUrl = "YOUR_VIDEO_URL"

        val videoView = view.findViewById<SimpleExoPlayerView>(R.id.videoView)
        val dataSourceFactory = DefaultDataSourceFactory(requireContext(), Util.getUserAgent(requireContext(), "app"))
        val mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(videoUrl))

        player = SimpleExoPlayer.Builder(requireContext()).build()
        player.prepare(mediaSource)
        player.playWhenReady = true
        videoView.player = player
    }

    override fun onDestroyView() {
        super.onDestroyView()
        player.release()
    }
}
  1. 创建一个VideoPagerAdapter类来管理ViewPager2中的视频片段:
class VideoPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) : FragmentStateAdapter(fragmentManager, lifecycle) {

    private val videoUrls = listOf(
        "VIDEO_URL_1",
        "VIDEO_URL_2",
        "VIDEO_URL_3"
    )

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

    override fun createFragment(position: Int): Fragment {
        val fragment = VideoFragment()
        fragment.arguments = Bundle().apply {
            putString("videoUrl", videoUrls[position])
        }
        return fragment
    }
}
  1. 在MainActivity中设置ViewPager2和VideoPagerAdapter:
class MainActivity : AppCompatActivity() {

    private lateinit var viewPager: ViewPager2

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

        viewPager = findViewById(R.id.viewPager)
        val videoPagerAdapter = VideoPagerAdapter(supportFragmentManager, lifecycle)
        viewPager.adapter = videoPagerAdapter
    }
}

这样就可以在ViewPager2中使用Fragment和ExoPlayer来播放视频了。请确保将"YOUR_VIDEO_URL"替换为实际的视频URL,将"VIDEO_URL_1"、"VIDEO_URL_2"和"VIDEO_URL_3"替换为您要显示的视频URL列表

Android ViewPager2+Fragment 使用 ExoPlayer+ViewModel 播放视频

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

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