Android Exoplayer正在使用PageTransformer删除预览
我有一个带立方体转换器的viewPager,它正在转换每个片段。每个片段中都有图像或视频视图(带有Exoplayer)。当你试图用转换来改变framgnet时,exoplayer会丢失预览(我有一个黑屏),即使它没有播放。但在您将条件更改为正常后,预览将返回 Ohterwise,如果您将删除pageTransformer,则评论不会消失。如何保持预览始终在屏幕上Android Exoplayer正在使用PageTransformer删除预览,android,exoplayer,exoplayer2.x,Android,Exoplayer,Exoplayer2.x,我有一个带立方体转换器的viewPager,它正在转换每个片段。每个片段中都有图像或视频视图(带有Exoplayer)。当你试图用转换来改变framgnet时,exoplayer会丢失预览(我有一个黑屏),即使它没有播放。但在您将条件更改为正常后,预览将返回 Ohterwise,如果您将删除pageTransformer,则评论不会消失。如何保持预览始终在屏幕上 CubeTransformer class CubeTransformer : ViewPager.PageTransformer
CubeTransformer
class CubeTransformer : ViewPager.PageTransformer {
override fun transformPage(view: View, position: Float) {
if (view.visibility != View.VISIBLE) return
view.apply {
cameraDistance = (view.width * distanceMultiplier).toFloat()
pivotX = if (position < 0f) view.width.toFloat() else 0f
pivotY = view.height * 0.5f
rotationY = 90f * position
if (position < -1 || position > 1) {
alpha = 0f // item not visible
} else {
alpha = 1f
}
}
}
private companion object {
private const val distanceMultiplier: Int = 20
}
}
经过一天的搜索,我找到了我问题的答案。您只需将app:surface\u type=“texture\u view”添加到您的PlayerView中即可
class VideoView(context: Context) : ConstraintLayout(context, null) {
private val player = ExoPlayerFactory.newSimpleInstance(context, DefaultTrackSelector(), DefaultLoadControl())
private val dataSourceFactory = DefaultDataSourceFactory(context, "android")
private lateinit var model: Model
init {
inflate(context, R.layout.story_item_video, this)
video_view.player = player
video_view.keepScreenOn = true
video_view.setBackgroundColor(Color.TRANSPARENT)
video_view.setShutterBackgroundColor(Color.TRANSPARENT)
}
fun setData(model: Model?) {
if (model== null) return
this.model = model
val mediaSource = HlsMediaSource
.Factory(dataSourceFactory)
.setExtractorFactory(DefaultHlsExtractorFactory())
.createMediaSource(Uri.parse(model.streamLink))
player.playWhenReady = true
player.prepare(mediaSource)
player.addListener(object: Player.EventListener {
override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters?) {
}
override fun onSeekProcessed() {}
override fun onTracksChanged(trackGroups: TrackGroupArray?, trackSelections: TrackSelectionArray?) {
}
override fun onPlayerError(error: ExoPlaybackException?) {
}
override fun onLoadingChanged(isLoading: Boolean) {
}
override fun onPositionDiscontinuity(reason: Int) {
}
override fun onRepeatModeChanged(repeatMode: Int) {
}
override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) {
}
override fun onTimelineChanged(timeline: Timeline?, manifest: Any?, reason: Int) {
}
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
}
})
}
}