禁用方向但检测方向

时间:2011-08-21 09:40:41

标签: android

我有一项活动。此活动适用于纵向模式或横向模式。在横向模式下,我加载一个新布局以显示图形。 为了检测方向,我在清单中设置了这个:

android:screenOrientation="sensor" android:configChanges="orientation"

它完美无缺,因为当我翻转手机时,会加载新的布局。但是,在lanscape模式下,用户可以通过按钮(它是切换器)禁用/启用旋转。

我写了这段代码:

public void onConfigurationChanged(Configuration pNewConfig) {
    Log.v(DEBUG_TAG, "Current configuration changes");

    if (pNewConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Log.v(DEBUG_TAG, "Screen orientation : LANDSCAPE");
        if (pNewConfig.orientation != mCurrentOrientation) {
            initTestLandscape();
            mCurrentOrientation = pNewConfig.orientation;
        }
    } else {
        Log.v(DEBUG_TAG, "Screen orientation : PORTRAIT");
        if (!mIsLandscapeLocking
                && pNewConfig.orientation != mCurrentOrientation) {
            initTestPortrait();
            mCurrentOrientation = pNewConfig.orientation;
        }
    }
    super.onConfigurationChanged(pNewConfig);
}

此代码有效,但当用户处于横向模式并将手机翻转为纵向模式且锁定开启时,lanscape布局将以纵向模式翻转,我不希望这样!

我添加了

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

但此代码禁用onConfigurationChanged方法,我无法检测用户是否再次翻转手机...

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

在android:configChanges中进行更改: -

  android:configChanges="orientation|screenSize|keyboard|keyboardHidden"

更改后,您的代码应该正常工作