如何在android 2.3.3中使用onConfigurationChanged()和新配置定向==配置定向_景观

wnavrhmk  于 2023-03-16  发布在  Android
关注(0)|答案(6)|浏览(108)

我用的是onConfigurationChanged(),当我从LandScape切换到Portrait时,它调用if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT),从LandScape切换到Portrait。但是当我从Portrait切换到Land-Scape时,它没有切换到LandScape,因为它调用if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE),所以它没有从LandScape切换到Portrait。请帮助。

public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        //int orientation = this.getResources().getConfiguration().orientation;

        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            Log.d("Entered to change as Portrait ","PPPPPPPPPPPPPPPPP");
            setContentView(R.layout.settings);
        } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Log.d("Entered to change as LandScape ","LLLLLLLLLLLLLLLLLLLL");
            setContentView(R.layout.settings);
        }

    }
rekjcdws

rekjcdws1#

只需将下面的代码写入onConfigurationChanged方法并进行测试

if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

    Log.e("On Config Change","LANDSCAPE");
}else{

    Log.e("On Config Change","PORTRAIT");
}

并像这样将android:configChanges="keyboardHidden|orientation"写入manifiest文件

<activity android:name="TestActivity"
           android:configChanges="keyboardHidden|orientation">

这对我很有效,希望对你有帮助.
如果您使用的是平板电脑,请将|screenSize添加到android:configChanges

0wi1tuuw

0wi1tuuw2#

如文档的Handling Runtime Changes部分所述,您还应了解:
注意事项:从Android 3.2开始(API级别13),当设备在纵向和横向之间切换时,“屏幕大小”也会更改。因此,如果您希望在为API级别13或更高级别开发时防止由于方向更改而导致运行时重新启动(如minSdkVersion和targetSdkVersion属性所声明),除了“orientation”值之外,您还必须包含“screenSize”值。即,您必须标记android:configChanges=“orientation|但是,如果您的应用面向API级别12或更低级别,则您的Activity始终自行处理此配置更改(此配置更改不会重启您的Activity,即使在Android 3.2或更高版本的设备上运行)。

9rnv2umw

9rnv2umw3#

android:configChanges="orientation|keyboardHidden"出现问题。
如果您从androidmanifest.xml中删除|keyboardHidden,则onConfigurationChanged仅在您从横向旋转到纵向时触发,而不会在您从纵向旋转到横向时触发(至少在默认模拟器中)。
希望这个有用。

vs3odd8k

vs3odd8k4#

除上述答案外:如果您在更新清单文件的同时覆盖onConfigurationChanged方法,则表示您正在自己处理configurationchanges。因此添加:

setContentView(R.layout.layout.xml);

在您的onConfigurationChanged方法中-其中layout是您的布局文件-将修复该问题。

vawmfj5a

vawmfj5a5#

在您的活动文件中写入以下代码。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
     Log.e("On Config Change","LANDSCAPE");
    }
    else{
     Log.e("On Config Change","PORTRAIT");
    }

}

另外,在清单文件中编写以下代码:

<activity
        android:name=".activities.TestActivity"
        android:configChanges="orientation|screenSize|keyboardHidden"
/>
iaqfqrcu

iaqfqrcu6#

在android Manifest.xml 文件中写入以下行:

<activity
  android:name="MyActivity"
  android:configChanges="orientation|keyboardHidden" />

相关问题