2012-02-26 184 views
4

我需要將我的Activity的佈局保留爲肖像模式,但在屏幕方向更改時仍然會收到通知,以便更新我的自定義畫布。我已成功地避免了Android OS無法重新啓動我的活動,改變佈局時,我通過把這些線在我的清單XML改變屏幕的方向:Android:阻止屏幕方向更改,但仍會收到通知

android:screenOrientation="portrait" 
android:configChanges="orientation" 

我也知道,我可以改變屏幕的方向通過調用Activity中的方法setRequestedOrientation進行編程。

問題是,當我設置screenOrientation標誌或調用方法setRequestedOrientation時,方法onConfigurationChanged根本不會被調用。當我從清單中移除標誌時它會被調用,但是佈局也會得到更新,這不是我想要的。

有沒有辦法如何防止操作系統改變佈局,但仍然能夠捕捉配置更改?

謝謝!

回答

4

我希望this class將解決您的問題。

+0

謝謝!看起來很有用,但是當傳感器線程一直在運行時,它不會消耗太多的CPU /電池嗎?我不需要確切的方向角度,就好像它是縱向/橫向或反向對應物。 – janhink 2012-02-26 21:06:57

+0

你可能在這裏有一點。我沒有注意到這個班級提供了一個確切的角度,看起來確實太多了,你打算做什麼。我很抱歉,但我不知道你能做到這一點。 – m1ntf4n 2012-02-26 21:53:51

+0

由於我沒有其他答案,您的解決方案可以用來解決我的問題,雖然不是我想要的方式,但我接受你的答案。謝謝! – janhink 2012-03-02 12:54:11

1

我得到了同樣的問題。這讓我的東西,是在我的mainfest XML加了一個字:

keyboardHidden

它應該是這樣的:

android:configChanges="orientation|keyboardHidden" 

舉例來說,在我的清單文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="pl.chris.mypicture" 
    android:versionCode="1" 
    android:versionName="1.0" 
    > 

    <uses-sdk android:minSdkVersion="10" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".MyPictureActivity" 
      android:label="@string/app_name" 
      android:configChanges="orientation|keyboardHidden" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

我不明白。你能發佈完整的代碼嗎? – idish 2013-08-10 08:46:22

+0

當然。我剛剛編輯了我的答案。 – Kris 2013-08-12 08:39:53

+0

我的意思是,你如何截取定向模式?您如何知道設備是處於縱向模式還是橫向模式?謝謝 :) – idish 2013-08-12 11:31:39