即使manifest声明活动将处理方向更改,WebView也会旋转

时间:2013-06-03 09:09:22

标签: android webview android-orientation

我在WebView中嵌入了Fragment。在清单文件中,我已声明该活动将处理方向更改:

android:configChanges="orientation|screenSize"

在活动中,为了捕捉方向,我已经过度使用了onConfigurationChanged()

我认为这意味着我们必须明确地处理屏幕方向的任何变化。但我看到的是屏幕仍在旋转(虽然活动没有重新创建)。

如果我使用以下行:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

它确实阻止了屏幕旋转,但我没有得到旋转事件。

因此,简而言之,我不希望系统旋转屏幕,同时,我希望从系统中获取方向已从纵向更改为横向的事件。

谢谢,
Rajath

2 个答案:

答案 0 :(得分:1)

如果您覆盖onConfigurationChanged(Configuration newConfig),则应该能够处理更改。

答案 1 :(得分:0)

感谢你对这个问题进行了编辑,现在对你来说很清楚。我有两个建议

  1. 屏幕方向(即肖像,风景,reversePortrait,reverseLandscape等)仅取决于3D空间中设备的方向。因此,一个想法是自己捕获设备的3D方向,这与操作系统用于做出屏幕方向决定的信息相同。这意味着您需要捕获加速度计和磁场传感器读数。捕获该信息的一个示例在我对Android Compass that can Compensate for Tilt and Pitch的回答中。
  2. 或者,您可以尝试设置纯粹的活动,以便捕获屏幕方向信息。该活动可以位于主要活动后面的活动堆栈中。虽然我不确定活动堆栈顶部的活动是否会通知屏幕方向更改。