Androidx kotlin 使用Viewpager2+动态Fragment+ExoPlayer实现上下滑动播放功能
要实现在Androidx Kotlin中使用ViewPager2和动态Fragment来实现上下滑动播放功能,可以按照以下步骤进行:
- 首先,确保你的项目中已经添加了ViewPager2和ExoPlayer的依赖。可以在项目的build.gradle文件中添加以下依赖:
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'
- 创建一个包含ViewPager2的布局文件,例如
activity_main.xml。在布局文件中添加ViewPager2组件:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- 创建一个动态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()
}
}
- 创建一个
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]
}
}
- 在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实例来加载和播放视频
原文地址: https://www.cveoy.top/t/topic/iz6h 著作权归作者所有。请勿转载和采集!