2013-02-14 36 views
30

我想在運行我的Android應用程序編程改變方向,用幾行代碼:更改Android的屏幕方向而不用重新加載活動

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

他們工作至今,但主要問題是,整個活動在屏幕方向改變時重新加載,而我不想那樣做。可能嗎?謝謝。

編輯:好吧,過了一段時間後,我發現我失蹤了。我還包括「屏幕尺寸」的configChanges財產,所以有

android:configChanges="orientation|screenSize" 

解決了整個事情。

+0

我認爲你應該在這個答案檢查出的第三個選擇。我相信這是PhoneGap處理方向更改的方式http://stackoverflow.com/questions/5913130/dont-reload-application-when-orientation-changes – MikeIsrael 2013-02-14 11:31:22

回答

4

你需要重寫的onSaveInstanceState(捆綁savedInstanceState)和寫要更改的捆綁參數

+0

+1,這是正確的答案=>他所問的不是可行的,只要這個解決方案,他可以做他想做的,只能用API 13以上android:configChanges =「orientation | screenSize」 – 2013-09-12 07:24:16

1

在AndroidManifest文件的應用程序狀態值增加android:configChanges="orientation"您要處理這個方向

活動在活動中使用onConfigurationChange覆蓋方法。做你想要處理方向變化的任務。

+0

謝謝,但它仍然無法正常工作。可能是因爲我在活動中使用Phonegap/HTML5?謝謝。 – luisfer 2013-02-14 11:45:16

+0

你可以添加更多的代碼嗎? – 2013-02-14 12:07:39

+0

@RajShah爲什麼需要更多的代碼?你讀過這個問題了嗎?標題如何? – 2013-09-12 07:25:06

1

調用此方法並設置清單文件

android:configChanges="orientation|screenSize|keyboardHidden" 

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
     } 
    } 
相關問題