【发布时间】:2011-08-30 16:14:37
【问题描述】:
我正在创建一个杂志应用程序,它使用 ViewPager 并在不同的 WebViews 上滚动。
大多数页面是纵向的,但其中一些可以被视为横向。
为了处理这个问题,我在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 应用)。
我一直在尝试这样做,我发现的唯一方法是更改Activity 中onConfigurationChanged() 方法中VideoView 的大小,并通知fragment 配置已更改。这样做的问题是将android:configChanges="orientation|keyboardHidden" 添加到Activity 将“禁止”重新创建视图。
我想到的两种可能的解决方案:
- 根据页面更改代码中的
android:configChanges,但我找不到该调用是否存在。 - 强制重新创建
onConfigurationChanged()方法。我不知道如何强制重新创建fragment。
有什么想法吗?
【问题讨论】:
标签: android android-fragments android-viewpager