Android橫豎屏切換在手機(jī)開發(fā)中比較常見,很多軟件在開發(fā)過程中為了避免橫豎屏切換時(shí)引發(fā)不必要的麻煩模狭;通常禁止掉橫豎屏的切換琴锭,還可以禁止橫豎屏切換時(shí)重啟Activity蝌借。普通橫豎平切換Activity生命周期方法執(zhí)行情況為:onPause-> onStop-> onDestory-> onCreate->onStart->onResume,為此涉及到內(nèi)容和數(shù)據(jù)的保存和讀取吟吝,否則轉(zhuǎn)屏之前的內(nèi)容就會(huì)消失了菱父。
1.禁止掉橫豎屏的切換通; 即在AndroidManifest.xml中設(shè)置activity中的android:screenOrientation屬性值來實(shí)現(xiàn)剑逃。
該android:screenOrientation屬性浙宜,他有以下幾個(gè)參數(shù):
"unspecified":默認(rèn)值 由系統(tǒng)來判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會(huì)有不同的顯示方向.
"landscape":橫屏顯示(寬比高要長)
"portrait":豎屏顯示(高比寬要長)
"user":用戶當(dāng)前首選的方向
"behind":和該Activity下面的那個(gè)Activity的方向一致(在Activity堆棧中的)
"sensor":有物理的感應(yīng)器來決定蛹磺。如果用戶旋轉(zhuǎn)設(shè)備這屏幕會(huì)橫豎屏切換粟瞬。
"nosensor":忽略物理感應(yīng)器,這樣就不會(huì)隨著用戶旋轉(zhuǎn)設(shè)備而更改了("unspecified"設(shè)置除外)萤捆。
2.禁止橫豎屏切換時(shí)重新創(chuàng)建Activity對象裙品;可以通過在androidmanifest.xml文件中重新定義方向(給每個(gè)activity加上android:configChanges=”keyboardHidden|orientation”屬性),并根據(jù)Activity的重寫onConfigurationChanged(Configuration
newConfig)方法來控制鳖轰,這樣在轉(zhuǎn)屏?xí)r就不會(huì)重啟activity了清酥,而是會(huì)去調(diào)用onConfigurationChanged(Configuration
newConfig)這個(gè)鉤子方法。
需要注意的是:onConfigurationChanged函數(shù)中只能獲得橫豎屏切換后的參數(shù)蕴侣,在該函數(shù)中獲取不到新的Layout和控件的尺寸位置信息焰轻,如果要處理尺寸和位置信息,必須通過消息異步或者延時(shí)調(diào)用