[转]Android横竖屏切换解决方案
本文轉(zhuǎn)自:http://www.cnblogs.com/domybest/archive/2011/06/30/2094779.html
?
首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"屬性
<activity android:name=".FileBrowser"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
加入這條屬性的含義是,應用程序?qū)幚砥聊环较蚝玩I盤狀態(tài)(推出或合上)信息的改動。但對于其他的設備配置信息的改動則會由Android系統(tǒng)來處理(銷毀當前Activity,然后重啟一個新的Activity實例)。
那么,現(xiàn)在還需要在java代碼的activity子類中加入配置信息改動的處理代碼。這個也很簡單
/** * onConfigurationChanged
* the package:android.content.res.Configuration.
* @param newConfig, The new device configuration.
* 當設備配置信息有改動(比如屏幕方向的改變,實體鍵盤的推開或合上等)時,
* 并且如果此時有activity正在運行,系統(tǒng)會調(diào)用這個函數(shù)。
* 注意:onConfigurationChanged只會監(jiān)測應用程序在AnroidMainifest.xml中通過
* android:configChanges="xxxx"指定的配置類型的改動;
* 而對于其他配置的更改,則系統(tǒng)會onDestroy()當前Activity,然后重啟一個新的Activity實例。
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); // 檢測屏幕的方向:縱向或橫向 if (this.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE) { //當前為橫屏, 在此處添加額外的處理代碼 }
else if (this.getResources().getConfiguration().orientation
== Configuration.ORIENTATION_PORTRAIT) { //當前為豎屏, 在此處添加額外的處理代碼 }
//檢測實體鍵盤的狀態(tài):推出或者合上 if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO){ //實體鍵盤處于推出狀態(tài),在此處添加額外的處理代碼 }
else if (newConfig.hardKeyboardHidden
== Configuration.HARDKEYBOARDHIDDEN_YES){ //實體鍵盤處于合上狀態(tài),在此處添加額外的處理代碼 }
}
別忘了在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"可以實現(xiàn)轉(zhuǎn)屏。
轉(zhuǎn)載于:https://www.cnblogs.com/freeliver54/archive/2011/12/28/2304709.html
總結(jié)
以上是生活随笔為你收集整理的[转]Android横竖屏切换解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 焕然一新下一句是什么啊?
- 下一篇: 简单统计分数的程序