更改视图的方向并使其全屏显示

Changing a view's orientation and making it full screen

我正在做一个视频播放器应用程序,想添加全屏功能。目前我使用的布局类似于 youtube,我的视频正在 videoView 中播放,完全没问题。

我想切换此 videoView 的方向并拉伸它以使其全屏显示。

这是我尝试过的;

((ViewManager)VideoView.getParent()).removeView(VideoView);
frameLayout.addView(VideoView); 

我只是取得了结果,但在这种情况下视频正在停止。就好像所有的 VideoView 都变得毫无用处。当我删除它时,它会尝试向死线程上的处理程序发送消息并停止工作。

我的问题是,

有什么方法可以在不删除视图的情况下更改视图的父级吗? 或者是否有更好的选择来使此视图全屏显示?

注意:这个VideoView的类型是Exo Media Video View,我用的是下面的库https://github.com/brianwernick/ExoMedia

经过深思熟虑,我找到了一个可行的解决方案。

  • 取消所有其他视图
  • 隐藏状态栏

基本上我写了这个功能结构

    private void goFullScreen() {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        makeAllGone();
    }

    private void outFullScreen(){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        makeAllVisible();
    }

    private void makeAllGone(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

        toolbar.setVisibility(View.GONE);
        // make visibility gone for the rest of the views

    }

    private void makeAllVisible(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

        toolbar.setVisibility(View.VISIBLE);
        // make visibility visible for the rest of the view
    }