gpt4 book ai didi

android - 如何隐藏所有的 ExoPlayer2?

转载 作者:行者123 更新时间:2023-11-29 23:49:38 24 4
gpt4 key购买 nike

如果视频媒体文件不可用,我正在尝试用 ImageView 替换 ExoPlayer2 View 。

    if(stepVideo != null) {
mPlaceHolderIv.setVisibility(View.GONE);
exoPlayerView.setVisibility(View.VISIBLE);
initializePlayer(Uri.parse(stepVideo));
//initialize MediaSession
initializeMediaSession();
} else if(stepThumbUrl != null) {
mPlaceHolderIv.setVisibility(View.GONE);
exoPlayerView.setVisibility(View.VISIBLE);
initializePlayer(Uri.parse(stepThumbUrl));
//initialize MediaSession
initializeMediaSession();
} else {
exoPlayerView.setVisibility(View.GONE);
releasePlayer();
mPlaceHolderIv.setVisibility(View.VISIBLE);
Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(mPlaceHolderIv);
}

我知道 else 被调用是因为显示了占位符图像;但是,播放控件仍然可见。我已经尝试了所有答案 here并且仍然显示控制 View (播放、暂停等)。有任何想法吗?

注意:我已经用标记为 exo_playback_control_view.xml 的文件覆盖了自定义控件。

编辑:修复了 View 消失时显示控件的问题,但新问题是为什么 SimpleExoPlayerView 的 xml 需要有一个 app:use_controller="false" 然后将其设置为初始化时在 Java 中为 true,释放时再次为 false?为什么控件 View 不随 SimpleExoPlayerView 的其余部分一起消失?

最佳答案

不确定这是否有帮助,但如果您只想用另一个 View 替换一个 View ,为什么不使用 ViewSwitcher 或 ViewAnimator?

2 个 subview (占位符和播放器 View /布局)将是您在它们之间切换的 View ,您调用 showNext 以切换到另一个 View 。

您还可以使用这些不错的辅助函数:

fun ViewAnimator.setViewToSwitchTo(viewToSwitchTo: View, animate: Boolean = true): Boolean {
if (currentView === viewToSwitchTo)
return false
for (i in 0 until childCount) {
if (getChildAt(i) !== viewToSwitchTo)
continue
if (animate)
displayedChild = i
else {
val outAnimation = this.outAnimation
val inAnimation = this.inAnimation
this.inAnimation = null
this.outAnimation = null
displayedChild = i
this.inAnimation = inAnimation
this.outAnimation = outAnimation
}
return true
}
return false
}

fun ViewAnimator.setViewToSwitchTo(@IdRes viewIdToSwitchTo: Int, animate: Boolean = true): Boolean {
if (currentView.id == viewIdToSwitchTo)
return false
for (i in 0 until childCount) {
if (getChildAt(i).id != viewIdToSwitchTo)
continue
if (animate)
displayedChild = i
else {
val outAnimation = this.outAnimation
val inAnimation = this.inAnimation
this.inAnimation = null
this.outAnimation = null
displayedChild = i
this.inAnimation = inAnimation
this.outAnimation = outAnimation
}
return true
}
return false
}

关于android - 如何隐藏所有的 ExoPlayer2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51037463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com