我正在创建一个杂志应用程序,它使用 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()Activityfragmentandroid:configChanges="orientation|keyboardHidden"Activity
我想到的两种可能的解决方案:
- 从代码更改
android:configChanges并取决于页面,但我找不到该调用是否存在。 - 强制重新创建该
onConfigurationChanged()方法。我不知道如何强制重新创建fragment.
有任何想法吗?