[英]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.