Android kotlin使用ExoPlayer+SurfaceView NestedScrollView嵌套SurfaceView SurfaceView在中间 播放视频 横竖屏切换效果
要在Android Kotlin中使用ExoPlayer与SurfaceView进行视频播放,并在NestedScrollView中嵌套SurfaceView,可以按照以下步骤操作:
- 首先,在你的xml布局文件中添加NestedScrollView和SurfaceView,如下所示:
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</androidx.core.widget.NestedScrollView>
- 在你的Activity或Fragment中,初始化ExoPlayer和SurfaceView,并设置ExoPlayer的渲染器为SurfaceView的Holder。同时,你还需要在Activity的onPause()和onResume()方法中分别暂停和恢复ExoPlayer的播放。
private var exoPlayer: SimpleExoPlayer? = null
private lateinit var surfaceView: SurfaceView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
surfaceView = findViewById(R.id.surfaceView)
surfaceView.holder.addCallback(object : SurfaceHolder.Callback {
override fun surfaceCreated(holder: SurfaceHolder) {
val renderersFactory = DefaultRenderersFactory(this@MainActivity)
val trackSelector = DefaultTrackSelector(this@MainActivity)
exoPlayer = ExoPlayerFactory.newSimpleInstance(this@MainActivity, renderersFactory, trackSelector)
exoPlayer?.playWhenReady = true
exoPlayer?.setVideoSurfaceHolder(holder)
}
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
}
override fun surfaceDestroyed(holder: SurfaceHolder) {
exoPlayer?.release()
exoPlayer = null
}
})
}
override fun onPause() {
super.onPause()
exoPlayer?.playWhenReady = false
exoPlayer?.playbackState
}
override fun onResume() {
super.onResume()
exoPlayer?.playWhenReady = true
exoPlayer?.playbackState
}
- 若要实现横竖屏切换效果,你可以在AndroidManifest.xml文件中为该Activity添加以下属性:
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:resizeableActivity="true"
android:screenOrientation="fullSensor" />
这将使得Activity在横竖屏切换时不会重新创建,并且可以根据设备的方向自动调整屏幕的方向。
以上就是在Android Kotlin中使用ExoPlayer与SurfaceView进行视频播放,并在NestedScrollView中嵌套SurfaceView的步骤。希望对你有所帮助
原文地址: https://www.cveoy.top/t/topic/iIaB 著作权归作者所有。请勿转载和采集!