Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 橫豎屏切換時不銷毀當前activity 和 鎖定屏幕

Android 橫豎屏切換時不銷毀當前activity 和 鎖定屏幕

編輯:關於Android編程

 

首先在Mainifest.xml的Activity元素中加入android:configChanges=orientation|keyboardHidden屬性

 

 

加入這條屬性的含義是,應用程序將會處理屏幕方向和鍵盤狀態(推出或合上)信息的改動。但對於其他的設備配置信息的改動則會由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文件中加上import android.content.res.Configuration。

這樣就OK了,屏幕方向改變時,應用程序的顯示界面也會隨著改動,而不是被銷毀!

 

 

Activity中還有一屬性和屏幕方向有關:

比如,在Mainifest.xml的Activity元素中增加這麼一個屬性:

android:screenOrientation=portrait

則無論手機如何變動,擁有這個屬性的activity都將是豎屏顯示。

android:screenOrientation=landscape,為橫屏顯示。

這裡提一個小知識,Anroid模擬器中,快捷鍵ctrl+F11可以實現轉屏。


 

 


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved