Ger*_*ssy 14 youtube android android-fragments android-orientation android-youtube-api
我试图解决这个问题,通过互联网搜索,没有找到真正的答案.
我正在开发一款需要YouTube播放器的应用.这个玩家是YouTubePlayerSupportFragment因为它在一个支持片段中(所以它也是嵌套的).初始设置后,我意识到无论何时旋转手机,视频都会停止播放,必须重新启动.这显然不是我想要的.
然后我发现了一些SO答案(就像这样),人们说Activity需要处理配置更改,所以我android:configChanges="keyboardHidden|orientation|screenSize"在清单中添加了Activity.这解决了这个问题,视频现在即使在方向改变时也能继续播放,全屏旋转看起来并不难看.很酷,我说,只是意识到这大大困扰了应用程序的其他部分,因为配置现在正在所有视图到位后更新.这意味着如果我的手机处于纵向模式并且我将其旋转到横向,则使用的布局仍然是纵向布局.
我找到了解决方案,建议调用setContentView(...)Activity onConfigurationChanged(...)并重新填充片段中的视图,但这似乎是一个相当麻烦的解决方案,因为它不仅仅是我需要的简单内容设置,需要保留片段(例如滚动)在...中的位置RecyclerView.setRetainInstance(true)在这种情况下,内置功能不起作用,因为视图也可以使用它重新创建,但是在onCreateView(...)调用时配置仍然是旧的.
如果我可以捕获configChanges事件,如果用户只在该屏幕(片段)上,但在其他任何地方保留Activity娱乐,那将是很好的.
不建议使用更多活动,由于UI/UX原因,我无法为此屏幕和应用程序的其余部分使用单独的活动.
根据此YouTube Android 播放器 API 指南
建议您手动处理由 Activity 中的方向引起的配置更改,以避免每次配置更改时重新创建此片段的视图。为了获得最佳的用户体验,您还应该通过更改 Activity 的布局来手动处理全屏事件。(请参阅第二个方法)
由于您已经自己处理配置更改,因此我可以看到您的问题的两种可能的解决方案。
YouTubePlayer对象)设置为FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE(这将导致播放器在设备进入横向方向时自动进入全屏。) 与FULLSCREEN_FLAG_CONTROL_ORIENTATION(启用方向的自动控制。) 标志结合使用。请注意,只有当您的活动锁定为纵向(并且在清单中指定为此类)时,才应设置此标志。
如果您的活动没有横向布局,但希望仅为全屏视频观看启用横向布局,则该标志非常有用。
setFullscreenControlFlags方法 set中FULLSCREEN_FLAG_CUSTOM_LAYOUT,这会禁用默认的全屏布局处理程序,使您能够手动控制到全屏布局的转换。除了使您能够实现自定义全屏布局之外,此选项还具有避免默认全屏行为中发生的重新缓冲的优点。实现自定义全屏行为的应用程序应该确保两件事
每当调用 onFullscreen(boolean) 时,播放器的视图都会占用应用程序窗口的整个可用空间。当方向更改为横向时,不会重新创建活动。要为支持纵向的 Activity 实现此目的,您需要指定您的 Activity 在应用程序清单中自行处理一些配置更改,包括方向、keyboardHidden 和 screenSize。
请参阅此处了解如何使用此标志。
根据我共享的第一个链接,第二种方法将避免每次配置更改时重新创建片段的视图。而且你也不需要打电话setContentView(...)进来onConfigurationChanged(...)。
希望对你有帮助。