作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果视频媒体文件不可用,我正在尝试用 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/
我是一名优秀的程序员,十分优秀!