2017-10-12 145 views
3

我使用exoplayer从我的android应用程序中的URL播放视频。在肖像中,一切都按预期工作(在活动中使用viewpager,片段和制表符)。 我的目标是在用户处于横向模式时以全屏播放视频。这意味着只有视频将在横向上播放,并且所有其他详细信息将在desapear时返回到原始布局。 我该如何做到这一点?或者什么是达到这个目标的最好方法?任何示例代码将不胜感激。如何使用exoplayer在景观中播放视频全屏

Video to be play when portrait

回答

4

我是一个菜鸟,所以这是最好的,我可以帮忙,顺便说一句我的Exoplayer演示应用程序测试了这个,我改变了exoplayer高度600像素和我申请这个代码,它完美地工作。

添加该代码来检测屏幕方向

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checking the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    //First Hide other objects (listview or recyclerview), better hide them using Gone. 
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) simpleExoPlayerView.getLayoutParams(); 
    params.width=params.MATCH_PARENT; 
    params.height=params.MATCH_PARENT; 
    simpleExoPlayerView.setLayoutParams(params); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
    //unhide your objects here. 
    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) simpleExoPlayerView.getLayoutParams(); 
    params.width=params.MATCH_PARENT; 
    params.height=600; 
    simpleExoPlayerView.setLayoutParams(params); 
    } 
} 

BTW在您不使用的FrameLayout但RelativeLayout的

 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) simpleExoPlayerView.getLayoutParams(); 

我忘了,你需要隐藏动作或标题栏,希望这种情况下,代码有助于在上面的代码中添加这些代码,我想你也需要将你的活动扩展到AppCompatActivity,以使getSupportActionBar代码可以工作。

if(getSupportActionBar()!=null) { 
    getSupportActionBar().hide(); 
} 
//To show the action bar 
if(getSupportActionBar()!=null) { 
    getSupportActionBar().show(); 
} 

也可能有助于为整个项目的全屏幕,隐藏状态bar.etc,必须内onConfigurationChanged根据屏幕方向进行添加。

在横向

ExoPlayerActivity.this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN || View.SYSTEM_UI_FLAG_IMMERSIVE); 

从全屏退出在肖像

ExoPlayerActivity.this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

我编辑的代码,我添加View.SYSTEM_UI_FLAG_IMMERSIVE防止状态栏示出从在控制按钮时用户点击视频。

+0

非常感谢您的回答。但最终我发现这个github项目,通过使用Dialog https://github.com/GeoffLedak/ExoplayerFullscreen来解决我的问题 – scalp007