我正在创建一个使用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
。
现在添加的功能是:
我一直在尝试这样做,我找到的唯一方法是更改VideoView
中onConfigurationChanged()
方法中Activity
的大小并通知fragment
配置发生了变化。这样做的问题是向android:configChanges="orientation|keyboardHidden"
添加Activity
将“禁止”重新创建视图。
我想到的两种可能的解决方案:
android:configChanges
,具体取决于页面,但我无法找到该调用是否存在。onConfigurationChanged()
方法上重新创建。我不知道如何强制重新创建fragment
。有什么想法吗?
答案 0 :(得分:2)
也许通过在清单中使用类似名称定义活动两次并将第二个化身设置为enabled = false,可以解决这个问题。然后通过调用PackageManager.setComponentEnabledSetting(....)来动态地切换2个活动,这只是一个想法,但不确定它是否会起作用。
答案 1 :(得分:2)
我正在创建一个杂志应用程序,它使用ViewPager并滚动浏览不同的WebView。
这可靠吗?
大多数页面都是纵向的,但有些页面可以看作是风景。
请允许以横向方式查看所有页面。如果您的用户希望以横向方式查看您的应用程序 - 例如,他们不想仅仅为了使用您的应用而将电视转向侧面 - 请让他们使用。
有什么想法吗?
在活动的onResume()
中,让它通知杂志页面片段根据当时VideoView
(Configuration
)修正其getResources().getConfiguration()
尺寸/位置
答案 2 :(得分:1)
我刚修好了。谢谢你的回答。
我的解决方案是让Activity
拥有android:configChanges="orientation|keyboardHidden"
标志。
在执行此操作后,我会覆盖onConfigurationChanged()
内的Fragment
方法,我会调整WebView
或VideoView
的大小,具体取决于我需要的内容。
编辑:
我刚刚对此做了blog post。