我们正在开发一个Android应用,其中至关重要的是防止MediaController
中的VideoView
可见。这是通过覆盖hide()
来实现的:
mediaController = new MediaController(getContext(), false){
@Override
public void hide() {
//Do not hide MediaController
if (videoView.getVisibility() == VISIBLE){
return;
}
//Hide only if VideoView is not visible anymore
super.hide();
}
};
VideoView
是一个Fragment的一部分,如果删除了该Fragment并显示了下一个Fragment,则MediaController
仍然可见但不可访问。我们尝试了不同的解决方案,以确保在删除super.hide()
时调用VideoView
,但是没有成功。上面的一个不起作用。我们还将if语句更改为:
if (videoView.isShown())
if (videoView.isActivated())
我们甚至尝试手动setVisibility(View.GONE)
来访问片段onDetach()
中的MediaController。
一旦片段被分离,我们如何正确隐藏MediaController?
答案 0 :(得分:0)
我们终于找到了解决问题的方法。
覆盖hide()
:
@Override
public void hide() {
//Do not hide MediaController
if (videoView.isShown()){
return;
}
super.hide();
}
在onDetach()
中,在hide()
之后手动调用super.onDetach()
:
@Override
public void onDetach() {
super.onDetach();
mediaController.hide();
}
在MediaController
可见期间,VideoView
现在将永久可见。 VideoView
消失后,MediaController
也将消失。