android:configChanges
一般在AndroidManifest.xml檔案中都沒有使用到android:configChanges="keyboardHidden|orientation"配置,當然還是很有用的。
就是如果配置了這個屬性,當我們橫豎屏切換的時候會直接呼叫onCreate方法中的onConfigurationChanged方法,而不會重新執行onCreate方法,那當然如果不配置這個屬性的話就會重新呼叫onCreate方法了。
通過設定這個屬性可以使Activity捕捉裝置狀態變化,以下是可以被識別的內容:
CONFIG_FONT_SCALE
CONFIG_MCC
CONFIG_MNC
CONFIG_LOCALE
CONFIG_TOUCHSCREEN
CONFIG_KEYBOARD
CONFIG_NAVIGATION
CONFIG_ORIENTATION
設定方法:將下列欄位用“|”符號分隔開,例如:“locale|navigation|orientation
android:configChanges
在android中每次螢幕的切換動會重啟Activity,所以應該在Activity銷燬前儲存當前活動的狀態,在Activity再次Create的時候載入配置。在activity加上android:configChanges="keyboardHidden|orientation"屬性,就不會重啟activity.而只是呼叫onConfigurationChanged(Configuration newConfig).這樣就可以在這個方法裡調整顯示方式.
public void onConfigurationChanged(Configuration newConfig) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.v("Himi", "onConfigurationChanged_ORIENTATION_LANDSCAPE");
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.v("Himi", "onConfigurationChanged_ORIENTATION_PORTRAIT");
}
} catch (Exception ex) {
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.himi" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
相關文章
- Android學習—— Android佈局Android
- Android之android exported="false"作用AndroidExportFalse
- [Android元件化]Android app BundleAndroid元件化APP
- AndroidAndroid
- android開發 之 Bolts-AndroidAndroid
- Android APIs (Class Index - Android SDK)(一)AndroidAPIIndex
- Android APIs (Class Index - Android SDK)(二)AndroidAPIIndex
- Android總結篇系列:Android ServiceAndroid
- 2018.03.12、Android知識點-Android篇Android
- 聚焦 Android 11: Android 開發者工具Android
- android裝置連線至Android studioAndroid
- Android解析ClassLoader(二)Android中的ClassLoaderAndroid
- 【Android SDK】在命令列管理Android SDKAndroid命令列
- Android Q (Android 10.0)系統新特性Android
- Android進階(七)Android中的ClassLoaderAndroid
- Android之Service設定android:process作用Android
- vector android:fillType gradient android:endX attribute not foundAndroid
- android基礎學習-android篇day17-Android Fragment(碎片)基本使用AndroidFragment
- Android workAndroid
- Android HWUIAndroidUI
- Android 《Notification》Android
- Android概述Android
- android:SQliteAndroidSQLite
- Android TVAndroid
- Android imagesAndroid
- android 拍照Android
- Android FrameworkAndroidFramework
- Android ServiceAndroid
- renderdoc on androidAndroid
- Android APNAndroid
- Android混淆Android
- Android APIAndroidAPI
- Now in Android:02 - 歡迎使用 Android Studio 4.0 !Android
- Android com.android.support衝突解決Android
- Android 訊息機制詳解(Android P)Android
- Android Jetpack - Android TV 應用開發教程AndroidJetpack
- android基礎學習-android篇day12-android的UI基礎入門AndroidUI
- Android開發編譯curl庫給Android使用Android編譯