可以知道何时更改屏幕方向但是在清单上强制使用纵向模式?

时间:2012-02-29 13:20:19

标签: android screen-orientation

欢迎所有

我特别需要我的应用。我必须强制该应用程序仅在纵向模式下工作,但我需要知道用户何时将手机移至横向模式。为什么?因为我正在显示带有纹理图像的opengl视图,当用户将手机位置更改为横向模式时,我必须旋转多边形而不重置活动。然后我必须在清单上强制执行纵向模式,因为我不希望再次调用我的onCreate方法。

拜托,有人可以告诉我如何实现这个目标吗?

我知道如何旋转图像,我只需要知道用户何时将手机移动到横向位置,但是在清单上强制使用肖像。

我尝试在清单中添加android:screenOrientation =“portrait”,并在清单中的声明中添加android:configChanges =“keyboardHidden | orientation”;然后在我的活动中覆盖onConfigurationChanged()。但是这样做不行,因为肖像模式是伪造的,那么onConfigurationChanged方法永远不会被调用......

由于

3 个答案:

答案 0 :(得分:3)

为什么不使用SensorManager来监控手机旋转90度的时间。实际上this也可能有所帮助。

答案 1 :(得分:0)

在清单android:configChanges =“orientation”中使用此属性,这将停止重新创建活动,然后覆盖onConfigurationChange()方法。在纵向和横向模式下提供相同的布局。当方向发生变化时,将调用该方法,然后像你一样改变图像

答案 2 :(得分:0)

不要在清单中设置屏幕方向(android:screenOrientation =“portrait”)。添加android:configChanges =“keyboardHidden | orientation”,并覆盖你的onConfigurationChanged()。这样你的onCreate将不会被调用两次。

这是onConfigurationChanged的一个例子:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig); // tem que ter
    if (getResources().getConfiguration().orientation ==  Configuration.ORIENTATION_LANDSCAPE) {

    } else 
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {

    }
}