Android橫豎屏要解決的問(wèn)題應(yīng)該就兩個(gè):一。布局問(wèn)題;二。重新載入問(wèn)題。
1.布局問(wèn)題:如果不想讓軟件在橫豎屏之間切換,最簡(jiǎn)單的辦法就是在項(xiàng)目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性,他有以下幾個(gè)參數(shù):
"unspecified"
默認(rèn)值 由系統(tǒng)來(lái)判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會(huì)有不同的顯示方向.
"landscape"
橫屏顯示(寬比高要長(zhǎng))
"portrait"
豎屏顯示(高比寬要長(zhǎng))
"user"
用戶(hù)當(dāng)前首選的方向
"behind"
和該Activity下面的那個(gè)Activity的方向一致(在Activity堆棧中的)
"sensor"
有物理的感應(yīng)器來(lái)決定。如果用戶(hù)旋轉(zhuǎn)設(shè)備這屏幕會(huì)橫豎屏切換。
"nosensor"
忽略物理感應(yīng)器,這樣就不會(huì)隨著用戶(hù)旋轉(zhuǎn)設(shè)備而更改了 ( "unspecified"設(shè)置除外 )。
也可以在Java代碼中通過(guò)setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);來(lái)設(shè)置。
如果要讓軟件在橫豎屏之間切換,由于橫豎屏的高寬會(huì)發(fā)生轉(zhuǎn)換,有可能會(huì)要求不同的布局。可以通過(guò)以下方法來(lái)切換布局:
1)在res目錄下建立layout-land和layout-port目錄,相應(yīng)的layout文件不變,比如main.xml。layout-land是橫屏的layout,layout-port是豎屏的layout,其他的不用管,模擬器會(huì)自動(dòng)尋找。
2)通過(guò)this.getResources().getConfiguration().orientation來(lái)判斷當(dāng)前是橫屏還是豎屏然后來(lái)加載相應(yīng)的xml布局文件。因?yàn)楫?dāng)屏幕變?yōu)闄M屏的時(shí)候,系統(tǒng)會(huì)重新呼叫當(dāng)前Activity的OnCreate方法,你可以把以下方法放在你的OnCreate中來(lái)檢查當(dāng)前的方向,然后可以讓你的SetContentView來(lái)載入不同的Layout xml.