在重写hide()之后隐藏MediaController

时间:2018-12-06 11:25:33

标签: android android-videoview mediacontroller

我们正在开发一个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?

1 个答案:

答案 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也将消失。