我正在开发一款杂志应用程序,它使用
为了处理这种情况,我在承载
通过调用
我们想要在一些杂志页面上添加视频功能,但不幸的是HTML5视频标签无法正常工作,因此我们在布局中添加了
我想到了两种可能的解决方案:
ViewPager
并可以在不同的 WebView
之间滚动。大部分页面都是纵向的,但有些页面可以横向查看。为了处理这种情况,我在承载
ViewPager
的 Activity
中使用了两种方法:public void allowOrientationChanges() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
public void enforcePortrait() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
通过调用
getActivity().enforcePortrait()
,我们确保所有只需要纵向显示的页面都保持纵向状态;而对于需要横纵向视图的页面,则需要经历整个重启过程,因此需要调用getActivity().allowOrientationChanges()
。我们想要在一些杂志页面上添加视频功能,但不幸的是HTML5视频标签无法正常工作,因此我们在布局中添加了
VideoView
。现在需要添加的功能是:
- 在纵向模式下:在特定位置显示视频(已完成!)。
- 在横向模式下:使视频全屏(类似于YouTube应用程序)。
Activity
的onConfigurationChanged()
方法中更改VideoView
的大小,并通知fragment
配置已更改。但是,使用android:configChanges="orientation|keyboardHidden"
将禁止视图重新创建,这是一个问题。我想到了两种可能的解决方案:
- 从代码中更改
android:configChanges
,并根据页面进行调用,但我无法确定该调用是否存在。 - 在
onConfigurationChanged()
方法中强制重新创建。我不知道如何强制重新创建fragment
。
setComponentEnabledSetting()
方法。它的问题在于它需要一个由包名和类名创建的ComponentName
,因此活动名称不能相同。如果这是解决方案,那么当页面滚动时启动两个不同的activities
,这听起来并不好:( - Macarse