本文實例講述了Android編程實現橫豎屏切換時不銷毀當前activity和鎖定屏幕的方法。分享給大家供大家參考,具體如下:
首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"屬性
<activityandroid:name=".FileBrowser"android:label="@string/app_name"android:configChanges="orientation|keyboardHidden"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity>
加入這條屬性的含義是,應用程序將會處理屏幕方向和鍵盤狀態(推出或合上)信息的改動。但對于其他的設備配置信息的改動則會由Android系統來處理(銷毀當前Activity,然后重啟一個新的Activity實例)。
那么,現在還需要在java代碼的activity子類中加入配置信息改動的處理代碼。這個也很簡單
/*** onConfigurationChanged* the package:android.content.res.Configuration.* @param newConfig, The new device configuration.* 當設備配置信息有改動(比如屏幕方向的改變,實體鍵盤的推開或合上等)時,* 并且如果此時有activity正在運行,系統會調用這個函數。* 注意:onConfigurationChanged只會監測應用程序在AnroidMainifest.xml中通過* android:configChanges="xxxx"指定的配置類型的改動;* 而對于其他配置的更改,則系統會onDestroy()當前Activity,然后重啟一個新的Activity實例。*/@Override publicvoid onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig); // 檢測屏幕的方向:縱向或橫向if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {//當前為橫屏, 在此處添加額外的處理代碼} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {//當前為豎屏, 在此處添加額外的處理代碼}//檢測實體鍵盤的狀態:推出或者合上if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO){//實體鍵盤處于推出狀態,在此處添加額外的處理代碼} else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES){//實體鍵盤處于合上狀態,在此處添加額外的處理代碼}}
別忘了在java文件中加上
這樣就OK了,屏幕方向改變時,應用程序的顯示界面也會隨著改動,而不是被銷毀!
Activity中還有一屬性和屏幕方向有關:
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答
圖片精選