解析Android橫豎屏切換的問(wèn)題
更新時(shí)間:2013年06月19日 09:56:22 作者:
本篇文章是對(duì)Android中橫豎屏切換的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
在做android 開(kāi)發(fā)時(shí),在默認(rèn)情況下當(dāng)屏幕從豎評(píng)變到橫屏?xí)r會(huì)觸發(fā) onConfigurationChanged 事件 在默認(rèn)情況下會(huì)重新加載畫(huà)面并顯示和橫評(píng)一樣的畫(huà)面,這樣會(huì)有2個(gè)問(wèn)題,
布局問(wèn)題,在豎屏 顯示的布局到橫屏中由于寬和高發(fā)生了變化所有多少都會(huì)影響到布局(除非你定制2套畫(huà)面在然后加個(gè)判斷在橫屏?xí)r怎么顯示,在豎屏?xí)r怎么顯示),當(dāng)然最簡(jiǎn)單的辦法就是在項(xiàng)目的 AndroidManifest.xml中找到你所指定的activity 中加上
只豎屏顯示的話(android:screenOrientation="portrait")
只橫屏顯示的話(android:screenOrientation="landscape")
畫(huà)面重新載入問(wèn)題:在默認(rèn)情況下橫豎 切換時(shí)會(huì)重新載入畫(huà)面,導(dǎo)致一些不必要的資源浪費(fèi),更嚴(yán)重的是畫(huà)面上保持的數(shù)據(jù)(特別是游戲方面)也都被重置了(當(dāng)然你可以在重置前保存這些數(shù)據(jù)到數(shù)據(jù)庫(kù)或者到文本文件中),要怎么避免在橫豎 切換時(shí)重新載入畫(huà)面,
首先要在 AndroidManifest.xml中找到你所指定的activity 中加上android:configChanges="orientation|keyboardHidden"
然后 在activity的邏輯處理中(代碼部分)去重載onConfigurationChanged事件,具體代碼參考一下(注:下面這個(gè)代碼是把橫豎屏切換時(shí),畫(huà)面不切換,且都當(dāng)成豎屏處理):
@Override
public void onConfigurationChanged(Configuration config) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//橫屏?xí)r要處理的代碼,
//這里的代碼是當(dāng)屏幕橫屏?xí)r當(dāng)成豎屏顯示
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//豎屏?xí)r要處理的代碼
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
} catch (Exception ex) {
}
}
以上就可以簡(jiǎn)單的控制你的app畫(huà)面的顯示方式并且在顯示方式不變的情況下橫豎 屏切換時(shí)不會(huì)重新加載畫(huà)面,即優(yōu)化的你的app同時(shí)用戶體驗(yàn)也相應(yīng)提高了。
以上,希望對(duì)大家有幫助。呵呵。
布局問(wèn)題,在豎屏 顯示的布局到橫屏中由于寬和高發(fā)生了變化所有多少都會(huì)影響到布局(除非你定制2套畫(huà)面在然后加個(gè)判斷在橫屏?xí)r怎么顯示,在豎屏?xí)r怎么顯示),當(dāng)然最簡(jiǎn)單的辦法就是在項(xiàng)目的 AndroidManifest.xml中找到你所指定的activity 中加上
只豎屏顯示的話(android:screenOrientation="portrait")
只橫屏顯示的話(android:screenOrientation="landscape")
畫(huà)面重新載入問(wèn)題:在默認(rèn)情況下橫豎 切換時(shí)會(huì)重新載入畫(huà)面,導(dǎo)致一些不必要的資源浪費(fèi),更嚴(yán)重的是畫(huà)面上保持的數(shù)據(jù)(特別是游戲方面)也都被重置了(當(dāng)然你可以在重置前保存這些數(shù)據(jù)到數(shù)據(jù)庫(kù)或者到文本文件中),要怎么避免在橫豎 切換時(shí)重新載入畫(huà)面,
首先要在 AndroidManifest.xml中找到你所指定的activity 中加上android:configChanges="orientation|keyboardHidden"
然后 在activity的邏輯處理中(代碼部分)去重載onConfigurationChanged事件,具體代碼參考一下(注:下面這個(gè)代碼是把橫豎屏切換時(shí),畫(huà)面不切換,且都當(dāng)成豎屏處理):
復(fù)制代碼 代碼如下:
@Override
public void onConfigurationChanged(Configuration config) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//橫屏?xí)r要處理的代碼,
//這里的代碼是當(dāng)屏幕橫屏?xí)r當(dāng)成豎屏顯示
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//豎屏?xí)r要處理的代碼
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
} catch (Exception ex) {
}
}
以上就可以簡(jiǎn)單的控制你的app畫(huà)面的顯示方式并且在顯示方式不變的情況下橫豎 屏切換時(shí)不會(huì)重新加載畫(huà)面,即優(yōu)化的你的app同時(shí)用戶體驗(yàn)也相應(yīng)提高了。
以上,希望對(duì)大家有幫助。呵呵。
您可能感興趣的文章:
- android橫豎屏切換不重啟activity解決方案
- android橫豎屏切換時(shí)候Activity的生命周期
- android實(shí)現(xiàn)在橫豎屏切換時(shí)頁(yè)面信息不被重置的示例分享
- Android Activity 橫豎屏切換的生命周期
- Android橫豎屏幕切換小結(jié)
- Android編程實(shí)現(xiàn)橫豎屏切換時(shí)不銷(xiāo)毀當(dāng)前activity和鎖定屏幕的方法
- android中Activity橫豎屏切換的那些事
- 解決Android橫豎屏切換數(shù)據(jù)丟失問(wèn)題的方法
- Android實(shí)現(xiàn)橫豎屏切換的實(shí)例代碼
- Android橫豎屏切換及其對(duì)應(yīng)布局加載問(wèn)題詳解
相關(guān)文章
Android轉(zhuǎn)場(chǎng)效果實(shí)現(xiàn)示例淺析
這篇文章主要為大家介紹了Android轉(zhuǎn)場(chǎng)效果實(shí)現(xiàn)示例淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android 將本地資源圖片轉(zhuǎn)換成Drawable,進(jìn)行設(shè)置大小操作
這篇文章主要介紹了Android 將本地資源圖片轉(zhuǎn)換成Drawable,進(jìn)行設(shè)置大小操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
android apk反編譯到j(luò)ava源碼的實(shí)現(xiàn)方法
Android由于其代碼是放在dalvik虛擬機(jī)上的托管代碼,所以能夠很容易的將其反編譯為我們可以識(shí)別的代碼,本文將詳細(xì)介紹,需要的朋友可以參考下2012-12-12
android仿愛(ài)奇藝加載動(dòng)畫(huà)實(shí)例
這篇文章主要介紹了android仿愛(ài)奇藝加載動(dòng)畫(huà)實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。2016-10-10
android AlertDialog的簡(jiǎn)單使用實(shí)例
本篇文章主要介紹了android AlertDialog的簡(jiǎn)單使用實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01
Android調(diào)用密碼鎖屏校驗(yàn)的流程代碼詳解
這篇文章主要介紹了Android調(diào)用密碼鎖屏校驗(yàn)的流程代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
分享Android開(kāi)發(fā)中最有效率最快的循環(huán)代碼
分享Android開(kāi)發(fā)中最有效率最快的循環(huán)代碼,需要的朋友可以參考下2013-01-01
Android 進(jìn)階實(shí)現(xiàn)性能優(yōu)化之OOM與Leakcanary詳解原理
LeakCanary 是大名鼎鼎的 square 公司開(kāi)源的內(nèi)存泄漏檢測(cè)工具。目前上大部分App在開(kāi)發(fā)測(cè)試階段都會(huì)接入此工具用于檢測(cè)潛在的內(nèi)存泄漏問(wèn)題,做的好一點(diǎn)的可能會(huì)搭建一個(gè)服務(wù)器用于保存各個(gè)設(shè)備上的內(nèi)存泄漏問(wèn)題再集中處理2021-11-11

