Androidx kotlin Viewpager2+ExoPlayer
To use ViewPager2 with ExoPlayer in Kotlin, you can follow the steps below:
- Add the necessary dependencies to your app's build.gradle file:
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.google.android.exoplayer:exoplayer:2.14.0'
- Create a layout file that contains ViewPager2:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Create a layout file for the individual pages of the ViewPager2. This layout will contain an ExoPlayerView to display the video:
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/playerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- Create a data class to hold the video data:
data class Video(val url: String)
- Create an adapter for the ViewPager2 that will inflate the page layout and set up the ExoPlayer:
class VideoPagerAdapter(private val videos: List<Video>) : RecyclerView.Adapter<VideoPagerAdapter.VideoViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VideoViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.page_layout, parent, false)
return VideoViewHolder(view)
}
override fun onBindViewHolder(holder: VideoViewHolder, position: Int) {
holder.bind(videos[position])
}
override fun getItemCount(): Int {
return videos.size
}
inner class VideoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val playerView: PlayerView = itemView.findViewById(R.id.playerView)
private val player: SimpleExoPlayer = SimpleExoPlayer.Builder(itemView.context).build()
fun bind(video: Video) {
playerView.player = player
val mediaItem = MediaItem.fromUri(video.url)
player.setMediaItem(mediaItem)
player.prepare()
}
}
}
- In your activity or fragment, set up the ViewPager2 with the adapter and provide a list of video data:
val viewPager: ViewPager2 = findViewById(R.id.viewPager)
val videos = listOf(
Video("https://example.com/video1.mp4"),
Video("https://example.com/video2.mp4"),
Video("https://example.com/video3.mp4")
)
val adapter = VideoPagerAdapter(videos)
viewPager.adapter = adapter
That's it! You now have a ViewPager2 with ExoPlayer in your Android app. The adapter will handle inflating the page layout and setting up the ExoPlayer for each page
原文地址: http://www.cveoy.top/t/topic/iz5T 著作权归作者所有。请勿转载和采集!