解析Android橫豎屏切換的問題
更新時間:2013年06月19日 09:56:22 作者:
本篇文章是對Android中橫豎屏切換的問題進行了詳細的分析介紹,需要的朋友參考下
在做android 開發(fā)時,在默認情況下當屏幕從豎評變到橫屏?xí)r會觸發(fā) onConfigurationChanged 事件 在默認情況下會重新加載畫面并顯示和橫評一樣的畫面,這樣會有2個問題,
布局問題,在豎屏 顯示的布局到橫屏中由于寬和高發(fā)生了變化所有多少都會影響到布局(除非你定制2套畫面在然后加個判斷在橫屏?xí)r怎么顯示,在豎屏?xí)r怎么顯示),當然最簡單的辦法就是在項目的 AndroidManifest.xml中找到你所指定的activity 中加上
只豎屏顯示的話(android:screenOrientation="portrait")
只橫屏顯示的話(android:screenOrientation="landscape")
畫面重新載入問題:在默認情況下橫豎 切換時會重新載入畫面,導(dǎo)致一些不必要的資源浪費,更嚴重的是畫面上保持的數(shù)據(jù)(特別是游戲方面)也都被重置了(當然你可以在重置前保存這些數(shù)據(jù)到數(shù)據(jù)庫或者到文本文件中),要怎么避免在橫豎 切換時重新載入畫面,
首先要在 AndroidManifest.xml中找到你所指定的activity 中加上android:configChanges="orientation|keyboardHidden"
然后 在activity的邏輯處理中(代碼部分)去重載onConfigurationChanged事件,具體代碼參考一下(注:下面這個代碼是把橫豎屏切換時,畫面不切換,且都當成豎屏處理):
@Override
public void onConfigurationChanged(Configuration config) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//橫屏?xí)r要處理的代碼,
//這里的代碼是當屏幕橫屏?xí)r當成豎屏顯示
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//豎屏?xí)r要處理的代碼
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
} catch (Exception ex) {
}
}
以上就可以簡單的控制你的app畫面的顯示方式并且在顯示方式不變的情況下橫豎 屏切換時不會重新加載畫面,即優(yōu)化的你的app同時用戶體驗也相應(yīng)提高了。
以上,希望對大家有幫助。呵呵。
布局問題,在豎屏 顯示的布局到橫屏中由于寬和高發(fā)生了變化所有多少都會影響到布局(除非你定制2套畫面在然后加個判斷在橫屏?xí)r怎么顯示,在豎屏?xí)r怎么顯示),當然最簡單的辦法就是在項目的 AndroidManifest.xml中找到你所指定的activity 中加上
只豎屏顯示的話(android:screenOrientation="portrait")
只橫屏顯示的話(android:screenOrientation="landscape")
畫面重新載入問題:在默認情況下橫豎 切換時會重新載入畫面,導(dǎo)致一些不必要的資源浪費,更嚴重的是畫面上保持的數(shù)據(jù)(特別是游戲方面)也都被重置了(當然你可以在重置前保存這些數(shù)據(jù)到數(shù)據(jù)庫或者到文本文件中),要怎么避免在橫豎 切換時重新載入畫面,
首先要在 AndroidManifest.xml中找到你所指定的activity 中加上android:configChanges="orientation|keyboardHidden"
然后 在activity的邏輯處理中(代碼部分)去重載onConfigurationChanged事件,具體代碼參考一下(注:下面這個代碼是把橫豎屏切換時,畫面不切換,且都當成豎屏處理):
復(fù)制代碼 代碼如下:
@Override
public void onConfigurationChanged(Configuration config) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//橫屏?xí)r要處理的代碼,
//這里的代碼是當屏幕橫屏?xí)r當成豎屏顯示
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//豎屏?xí)r要處理的代碼
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
} catch (Exception ex) {
}
}
以上就可以簡單的控制你的app畫面的顯示方式并且在顯示方式不變的情況下橫豎 屏切換時不會重新加載畫面,即優(yōu)化的你的app同時用戶體驗也相應(yīng)提高了。
以上,希望對大家有幫助。呵呵。
您可能感興趣的文章:
相關(guān)文章
Android開發(fā)實現(xiàn)Launcher3應(yīng)用列表修改透明背景的方法
這篇文章主要介紹了Android開發(fā)實現(xiàn)Launcher3應(yīng)用列表修改透明背景的方法,結(jié)合實例形式分析了Launcher3相關(guān)配置文件與功能函數(shù)修改設(shè)置操作技巧,需要的朋友可以參考下2017-11-11Android自定義GestureDetector實現(xiàn)手勢ImageView
這篇文章主要為大家詳細介紹了Android自定義GestureDetector實現(xiàn)手勢ImageView的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03Android通過原生方式獲取經(jīng)緯度與城市信息的方法
這篇文章主要給大家介紹了關(guān)于Android通過原生方式獲取經(jīng)緯度與城市信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Android自定義ProgressBar實現(xiàn)漂亮的進度提示框
這篇文章主要為大家詳細介紹了Android自定義ProgressBar實現(xiàn)漂亮的進度提示框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06android sdk安裝及開發(fā)環(huán)境部署
本文給大家詳細講解了android sdk安裝方法以及android開發(fā)環(huán)境部署方法,非常的細致全面,有需要的小伙伴務(wù)必詳細研究下。2015-11-11Flutter定義tabbar底部導(dǎo)航路由跳轉(zhuǎn)的方法
這篇文章主要為大家詳細介紹了Flutter定義tabbar底部導(dǎo)航路由跳轉(zhuǎn)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07