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

來源:互聯網
上載者:User

轉載自:http://justsee.iteye.com/blog/1113120

首先在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檔案中加上import android.content.res.Configuration。

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

 

 

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

<activity . . . android:screenOrientation=["unspecified"
| "user" | "behind" | "landscape" | "portrait" | "sensor"
| "nosensor"] . . . </activity>

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

android:screenOrientation="portrait"

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

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

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.