Android Kotlin 实现 ViewPager2 + ExoPlayer 上下滑动播放功能
要在 Androidx Kotlin 中使用 ViewPager2 和 ExoPlayer 实现上下滑动播放功能,可以按照以下步骤进行操作:
- 首先,确保你的项目已经添加了 ViewPager2 和 ExoPlayer 的依赖。在你的项目的 build.gradle 文件中添加以下依赖:
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.google.android.exoplayer:exoplayer:2.14.0'
- 在你的布局文件中,添加一个 ViewPager2 控件:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- 创建一个数据类来保存视频信息,例如 Video 类:
data class Video(val title: String, val url: String)
- 创建一个继承自 RecyclerView.Adapter 的适配器类,例如 VideoAdapter:
class VideoAdapter(private val videos: List<Video>) :
RecyclerView.Adapter<VideoAdapter.VideoViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VideoViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_video, parent, false)
return VideoViewHolder(view)
}
override fun onBindViewHolder(holder: VideoViewHolder, position: Int) {
val video = videos[position]
holder.bind(video)
}
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 lateinit var player: SimpleExoPlayer
fun bind(video: Video) {
val mediaItem = MediaItem.fromUri(video.url)
player = SimpleExoPlayer.Builder(itemView.context).build()
player.setMediaItem(mediaItem)
player.prepare()
playerView.player = player
}
}
}
- 在你的 Activity 或 Fragment 中,初始化 ViewPager2,并设置适配器:
val viewPager: ViewPager2 = findViewById(R.id.viewPager)
val videos = listOf(
Video('Video 1', 'https://example.com/video1.mp4'),
Video('Video 2', 'https://example.com/video2.mp4'),
Video('Video 3', 'https://example.com/video3.mp4')
)
val adapter = VideoAdapter(videos)
viewPager.adapter = adapter
- 现在,你就可以在 ViewPager2 中滑动来播放不同的视频了。
这样,你就可以在 Androidx Kotlin 中使用 ViewPager2 和 ExoPlayer 实现上下滑动播放功能了。记得在适配器中添加必要的逻辑,例如在页面切换时释放之前的播放器等。
原文地址: https://www.cveoy.top/t/topic/qg8A 著作权归作者所有。请勿转载和采集!