Android橫屏豎屏切換
阿新 • • 發佈:2019-02-11
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()方法中也可以動態改變資原始檔和維持先前的狀態。而這種方式:
其實在這種模式下,由於Android系統自動尋找不同介面檔案,而Androidmanifest.xml中已定義了android:configChanges="keyboardHidden|orientation"只監聽方向改變 所以我們在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); } }
註明:QQ技術交流群:108614806 感興趣的加一下。