1

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

android:configChanges="orientation|screenSize"

在活动中,onConfigurationChanged()为了捕捉方向,我已经重写了。

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

如果我使用以下行:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

它确实可以防止屏幕旋转,但我没有收到旋转事件。

所以,简而言之,我不想让系统旋转屏幕,同时我想从系统中得到一个方向已经从纵向变为横向的事件。

谢谢,
拉贾特

4

2 回答 2

1

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

于 2013-06-03T09:19:35.207 回答
0

感谢您编辑问题,我现在清楚您所追求的。我有两个建议

  1. 屏幕方向(即纵向、横向、reversePortrait、reverseLandscape 等)仅取决于设备在 3D 空间中的方向。所以一个想法是自己捕捉设备的 3D 方向,这与操作系统用来做出屏幕方向决定的信息相同。这意味着您需要捕获加速度计和磁场传感器读数。捕获该信息的一个示例是我对可以补偿倾斜和俯仰的 Android Compass的回答。
  2. 或者,您可以尝试设置一个纯粹为了捕获屏幕方向信息而存在的虚拟活动。该活动可以位于主要活动后面的活动堆栈上。虽然我不确定不在活动堆栈顶部的活动是否会收到屏幕方向更改的通知。

于 2013-06-03T09:56:09.373 回答