Android 2.3.3& 4.1.2 android:configChanges用于检测方向变化

时间:2012-12-27 05:45:40

标签: android android-orientation

我正在使用Android 2.3.3 API构建应用。我需要认识到方向的变化并执行一些动作。所以我在Android Manifest中添加了以下内容,

android:configChanges="orientation|keyboardHidden

我重写方法

public void onConfigurationChanged(Configuration newConfig)

它在Android 2.3.3上运行完美。但是当我在4.1.2上安装相同的应用程序(使用2.3.3 API构建)时,不会调用onConfigurationChanged()。我在网上搜索解决方案,人们建议在android清单中添加以下内容。

 android:configChanges="orientation|keyboardHidden|screenSize"

如果我使用上述语句构建应用程序并使用4.1.2 API构建,则它在4.1.2设备上运行良好。但是我无法在2.3.3上安装它。 2.3.3 API没有“screenSize”选项。所以为了支持两者,我该怎么办?

谢谢,Karthik

4 个答案:

答案 0 :(得分:2)

嗨,看看我的AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="10" 
    android:maxSdkVersion="16"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity 
        android:name=".ConfigrationTask"
        android:configChanges="orientation|keyboardHidden"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

    </activity>
</application>

答案 1 :(得分:1)

仅仅因为您针对某个API级别进行编译或目标,并不意味着您无法明确支持较低的API级别。尝试在清单中添加以下内容。我从您问题中提到的版本中获取了级别。

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16"/>

答案 2 :(得分:1)

仅供参考我在下面使用的代码:

    @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
        Toast.makeText(getBaseContext(),"On Config Change LANDSCAPE", Toast.LENGTH_LONG).show();
    }else{
        Toast.makeText(getBaseContext(),"On Config Change PORTRAIT", Toast.LENGTH_LONG).show();
    }
}

答案 3 :(得分:0)

请注意您的情况: config changes 屏幕方向已更改 - 用户已旋转设备。 注意:如果您的应用程序的目标是API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明),那么您还应该声明“screenSize”配置,因为当设备在纵向和横向之间切换时它也会发生变化。

谢谢