1. 程式人生 > >Android橫屏豎屏切換

Android橫屏豎屏切換

1.切換模擬器的橫豎屏的方式:快捷鍵:ctrl+f12

如果固定橫屏可以在eclipse 裡面run dialog->target 裡面可以設定.如果是命令列可以使用引數
emulator -skin HVGA-L 

2.要讓程式介面保持一個方向,不隨手機方向轉動而變化的處理辦法: 

在AndroidManifest.xml裡面配置一下就可以了。加入這一行android:screenOrientation="landscape"。

例如(landscape是橫向,portrait是縱向):

另外,android中每次螢幕的切換動會重啟Activity,所以應該在Activity銷燬前儲存當前活動的狀態,在Activity再次Create的時候載入配置,那樣,進行中的遊戲就不會自動重啟了!
有的程式適合從豎屏切換到橫屏,或者反過來,這個時候怎麼辦呢?可以在配置Activity的地方進行如下的配置android:screenOrientation="portrait"。這樣就可以保證是豎屏總是豎屏了,或者landscape橫向。

3. 程式中如果橫豎屏的變換可以變換樣式,如背景圖片,按鈕大小和佈局等。所以可以利用Android系統每次螢幕切換會重啟Activity的特性,在OnCreat處自動載入不同顯示狀態下的layout。

實現有如下幾種方式:

(1)手動變換資原始檔等操作。即是因為螢幕變換後會再次重啟而呼叫oncreate(),所以判斷當前的螢幕為橫或豎方向後更改資原始檔即可實現。 方法如下:
//獲得當前的螢幕方向   
   public static int ScreenOrient(Activity activity){  
       //取得當前螢幕的方向,如果此值為-1表示androidManifest.xml沒有設定Android:screanOrentation屬性所以這樣無法判斷螢幕方向。   
       //可以使用另一種思路,即長度大於高度的為橫屏,否則為豎屏。   
      int orientation = activity.getRequestedOrientation();//得到螢幕方向   
      int landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;//橫屏靜態常量   
     int portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;//豎屏常量   
     int width = activity.getWindowManager().getDefaultDisplay().getWidth();//得到系統顯示屬性後得到螢幕寬度   
       int height = activity.getWindowManager().getDefaultDisplay().getHeight();//得到螢幕高度   
     return width>height?portrait:landscape;//判斷   
  }  

(2)避免Android系統自動重啟activity,需要在Androidmanifest.xml中相應Activity加上android:configChanges="keyboardHidden|orientation"屬性,使相應的Activity重啟而是呼叫onConfigurationChanged(Configuration newConfig)。 在onConfigurationChanged()方法中也可以動態改變資原始檔和維持先前的狀態。而這種方式:
@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
		if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
			Log.d("==LANDSCAPE==", "==LANDSCAPE==");
			setContentView(R.layout.main);
		} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
			Log.d("==PORTRAIT==", "==PORTRAIT==");
			setContentView(R.layout.main2);
		}
	}
其實在這種模式下,由於Android系統自動尋找不同介面檔案,而Androidmanifest.xml中已定義了android:configChanges="keyboardHidden|orientation"只監聽方向改變 所以我們在onConfigurationChanged裡改變應該改變的東西即可。

註明:QQ技術交流群:108614806   感興趣的加一下。