更改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维度,以使内容与屏幕方向成比例。