【问题标题】:Android start layout with current orientation, after that disable rotationAndroid以当前方向开始布局,之后禁用旋转
【发布时间】:2011-11-15 06:04:33
【问题描述】:

我希望可以在横向/纵向中使用活动。活动从当前方向的布局开始(这意味着在开始活动之前)。之后它必须坚持下去,而不是对方向变化做出反应。

我试着放了

android:configChanges="orientation" 

在活动的清单中,并覆盖

@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
}

什么都不做(也尝试评论超级调用,但这会导致异常) 但这并没有禁用旋转更改的效果 - 处理更改并重建布局,它只是没有使用正确的。

我不能用

android:screenOrientation

因为似乎我必须始终指定一种模式,而这也不是我需要的。 无论如何,如果我在那里指定一些东西,活动会在旋转时重建。 尝试过

android:screenOrientation="nosensor"

什么都不做

这里有一个带有代码的当前方向锁 http://www.samcoles.co.uk/mobile/android-lock-and-unlock-screen-orientation/

但它实现了与在 XML 中指定方向相同的效果(保持布局但重建活动)。它更接近我想要的(从一开始就保持方向),但重建了活动,我根本不希望它做出反应。

【问题讨论】:

  • 您找到解决方案了吗?我无法坚持横向。它只是禁用了我的美化 xml,使用 android:configChanges="orientation" 加上覆盖 onConfigurationChanged 如您所示,产生了这种效果。

标签: android configuration orientation landscape portrait


【解决方案1】:

将此添加到 onCreate

if (this.getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
        else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}

【讨论】:

    【解决方案2】:

    试试

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        newConfig.orientation = getResources().getConfiguration().orientation;
        super.onConfigurationChanged(newConfig);
    }
    

    【讨论】:

    • 这可以保持布局,但会重建活动。
    【解决方案3】:

    android:configChanges="orientation" 在模拟器上根本不工作,但在设备上可以正常工作。

    【讨论】:

    • 可能,我用的是模拟器。目前无法在任何设备上进行测试。
    • 我也遇到了同样的问题。它不适用于模拟器,但我已经在几部手机上尝试过,它工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多