如何使用exoplayer横向全屏播放视频

新手上路,请多包涵

我正在使用 exoplayer 在我的 android 应用程序中播放来自 url 的视频。在肖像中,一切都按预期工作(在活动中使用 viewpager、片段和选项卡)。我的目标是在用户横向时全屏播放视频。这意味着只有视频会横向播放,所有其他细节都会消失并在纵向时返回到原始布局。请问我怎样才能做到这一点?或者实现这一目标的最佳方法是什么?任何示例代码将不胜感激。

纵向播放的视频

原文由 Jean-Pascal MEWENEMESSE 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

我是菜鸟,所以这是我能提供的最好的帮助,顺便说一句,我在 Exoplayer 演示应用程序中对此进行了测试,我将 exoplayer 高度更改为 600px 并应用了这段代码,它运行良好。

添加此代码以检测屏幕方向

  @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);
  }
}

顺便说一句,以防万一您使用的不是 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();
 }

这也可能有助于将整个项目设置为全屏,隐藏状态栏等,必须根据屏幕方向在 onConfigurationChanged 中添加。

在景观中

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

在 PORTRAIT 模式下退出全屏

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

我编辑了代码,添加了 View.SYSTEM_UI_FLAG_IMMERSIVE 以防止在用户单击视频中的控制按钮时显示状态栏。

原文由 Daiwik Dan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏