更改android:动态配置更改
我正在创建一个杂志应用程序,它使用更改android:动态配置更改,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我正在创建一个杂志应用程序,它使用ViewPager并在不同的WebViews上滚动。 大多数页面都是纵向的,但有些页面可以看作是横向的 为了处理这个问题,我在活动中使用了两种方法按住查看页面: public void allowOrientationChanges() { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); } public void enforcePortrait() { setR
ViewPager
并在不同的WebView
s上滚动。
大多数页面都是纵向的,但有些页面可以看作是横向的
为了处理这个问题,我在活动中使用了两种方法
按住查看页面
:
public void allowOrientationChanges() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
public void enforcePortrait() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
通过此操作,我们确保所有需要纵向显示的页面都保持纵向(调用getActivity().EnforceGrait()
)并且具有纵向/横向视图的页面经过整个重新启动过程(调用getActivity().allowOrientationChanges()
)
我们达到了一个点,我们想添加视频到一些杂志的网页。不幸的是,HTML5视频标签无法正常工作,因此我们在布局中添加了一个VideoView
。
现在要添加的功能是:
- 纵向:在某个地方显示视频。(完成!)
- 在横向:使视频全屏(如youtube应用程序)
活动中的onConfigurationChanged()
方法中更改视频视图的大小,并通知片段
配置已更改。这方面的问题是将android:configChanges=“orientation | keyboardHidden”
添加到活动将“禁止”要重新创建的视图
我想到了两种可能的解决方案:
更改android:configChanges的
在onConfigurationChanged()
方法上强制重新创建。我不知道如何强制重新创建片段
有什么想法吗?也许有一种解决方法,在清单中用相似的名称定义两次活动,并将第二次化身设置为enabled=false。然后动态切换这两个活动,调用它只是一个想法,但不确定它是否会起作用
我正在创建一个杂志应用程序,它使用一个ViewPager并在不同的网络视图上滚动
这可靠吗
大多数页面都是纵向的,但有些页面可以看作是横向的
请允许在横向视图中查看所有页面。如果您的用户希望在横向视图中查看您的应用程序,例如,他们不想为了使用您的应用程序而将电视转向一侧,请允许他们
有什么想法吗
在活动的onResume()
中,让它通知杂志页面片段根据当时的Configuration
(getResources().getConfiguration()
)调整其VideoView
大小/位置。。谢谢你的回答
我的解决方案是让活动具有android:configChanges=“orientation | keyboardHidden”
标志
完成此操作后,我将覆盖片段
中的onConfigurationChanged()
方法,在此根据需要调整WebView
或VideoView
的大小
编辑:
我刚刚对此做了一些介绍。我刚刚读了一些关于setComponentEnabledSetting()
方法的内容。问题是它需要一个ComponentName
,它是用包名和类名创建的,因此活动的名称不能相等。如果这是一个解决方案,它将等同于定义两个不同的活动
,并在页面滚动时启动它们,这听起来不太好:(a)你所说的可靠是什么意思?b) 大多数页面都是全屏图像,不幸的是,我没有资源以横向模式显示它们。c) 我想在onResume()
方法中添加该逻辑,但这意味着视频将被重新创建。不仅浪费资源,而且我还需要将所有逻辑添加到seekTo()
@Macarse:“你说的可靠是什么意思?”--我希望ViewPager
和WebView
能够为触摸事件而斗争。“这意味着视频将被重新创建。””“是的。然而,我有一种奇怪的感觉,你将无法得到你想要的。我不知道你的两个具体想法(在你问题的底部)中是否有一个是可能的。这个实现很简单,并且在未来很好地工作!我在DialogFragment中重写了OnConfiguration Changed
,以便让ExoPlayer和嵌入式YouTube播放器视图无缝播放内容,而不会因方向更改而中断。在onConfigurationChanged
中,我更新了DialogFragment维度,以使内容与屏幕方向成比例。