【问题标题】:Full-screen goes out when switching to portrait切换到纵向时全屏熄灭
【发布时间】:2014-08-21 17:28:21
【问题描述】:

我正在为 android 应用程序使用 Youtube API,并且我正在寻找一种方法来避免在横向模式之间切换时退出全屏模式。意思是,我不想在将手机切换到纵向模式时退出全屏模式。我需要视频始终全屏显示。

有没有办法实现它?

我当前的全屏代码是:

@Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider,
            YouTubePlayer player, boolean wasRestored) {
        if (!wasRestored) {
            Intent intent = getIntent();
            String Video_Link = intent.getStringExtra("youtube_id");
            player.cueVideo(Video_Link);
            player.setFullscreen(true);
        }
    }

非常感谢。

【问题讨论】:

    标签: android android-youtube-api


    【解决方案1】:

    在我的情况下,活动需要是纵向的,但视频始终是横向的。

    正如 Will Thomson 上面提到的,您需要将其添加到您的清单中:

    android:configChanges="orientation|keyboardHidden|screenSize"
    

    这可能不是做事的理想方式,但可以满足我的需要。
    初始化后可以设置全屏监听:

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
    
        this.player = player;
        player.setOnFullscreenListener(this);
    
        if(!wasRestored) {
            player.cueVideo(Constants.INTO_YOUTUBE_VIDEO_ID);
        }
    }
    

    然后在回调中你可以手动设置方向:

    @Override
    public void onFullscreen(boolean fullscreen) { 
    
        videoIsFullScreen = fullscreen;
    
        if(fullscreen) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
        else {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
    }
    

    当用户点击播放时,您可以使用player.setFullscreen(true)。当用户点击后退按钮时,您可以退出全屏或完成活动。

    @Override
    public void onBackPressed() {
        if(player != null && videoIsFullScreen) {
            player.setFullscreen(false);
        }
        else {
            super.onBackPressed();
        }
    }
    

    这里有另一个类似的答案https://stackoverflow.com/a/39494759/1159930,但在第一条评论之后,视频以全屏纵向模式而不是横向模式播放。

    【讨论】:

      【解决方案2】:

      在方向改变时,调用 onCreate 方法。您可以尝试在 Manifest 文件中的相关 Activity 中添加这一行,以防止 onCreate 调用。

          android:configChanges="orientation|keyboardHidden|screenSize|layoutDirection"
      

      它可能会为您保持 youtube 的全屏状态...

      否则您可能会尝试覆盖 onconfigchange 方法:

      @Override //reconfigure display properties on screen rotation
          public void onConfigurationChanged(Configuration newConfig) {
              super.onConfigurationChanged(newConfig);
      
                  //Checks the orientation of the screen
                  if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
                      {
                      // handle change here
                      } 
                  else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
                      {
                      // or here
                      }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 2013-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多