簡體   English   中英

Android 2.3.3和4.1.2 android:configChanges用於檢測方向更改

[英]Android 2.3.3 & 4.1.2 android:configChanges for detecting Orientation change

我正在使用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

嗨,看看我的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>

僅僅因為您針對某個API級別進行編譯或目標,並不意味着您無法明確支持較低的API級別。 嘗試在清單中添加以下內容。 我從您問題中提到的版本中獲取了級別。

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

僅供參考以下我使用過的代碼:

    @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();
    }
}

請注意以下情況: 配置更改屏幕方向已更改 - 用戶已旋轉設備。 注意:如果您的應用程序的目標是13級或更高級別的API(由minSdkVersion和targetSdkVersion屬性聲明),那么您還應該聲明“screenSize”配置,因為當設備在縱向和橫向之間切換時它也會發生變化。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM