我正在创建一个杂志应用程序,它使用 a并在不同的 s 上ViewPager
滚动。WebView
大多数页面是纵向的,但其中一些可以被视为横向。
为了处理这个问题,我使用了两种方法来Activity
持有ViewPager
:
public void allowOrientationChanges() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
public void enforcePortrait() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
有了这个,我们确保所有只需要纵向的页面都保持纵向(调用getActivity().enforcePortrait()
),而具有纵向/横向视图的页面会经历整个重启过程(调用getActivity().allowOrientationChanges()
)。
我们已经到了想要在杂志的某些页面上添加视频的地步。不幸的是,HTML5 视频标签不能正常工作,所以我们在VideoView
布局中添加了一个。现在要添加的功能是:
- 纵向:在特定位置显示视频。(完成!)
- 在横向:使视频全屏(如 youtube 应用程序)。
我一直在尝试这样做,我发现的唯一方法是更改方法中VideoView
的大小并通知配置更改。这样做的问题是增加了“不允许”重新创建视图的意愿。onConfigurationChanged()
Activity
fragment
android:configChanges="orientation|keyboardHidden"
Activity
我想到的两种可能的解决方案:
- 从代码更改
android:configChanges
并取决于页面,但我找不到该调用是否存在。 - 强制重新创建该
onConfigurationChanged()
方法。我不知道如何强制重新创建fragment
.
有任何想法吗?