2010-10-29 118 views
1

我正在使用android HTC HERO 2.1版本。Android屏幕方向錯誤

活動我寫:

<activity android:name=".gogogo" 
      android:label="@string/app_name" 
      android:theme="@style/Theme.mine" 
      android:screenOrientation="landscape" 
      android:configChanges="orientation"> 

讓我的方向改變爲橫向。

但是,我發現每次按下「電源」按鈕然後回到我的活動時,它總是以肖像開始。

我試過遊戲:TEETER,這不是我寫的。也有同樣的問題,任何人都知道如何解決它?

編輯:it always start at portrait. - >我的意思是,如果你從權力回來,你必須向下滾動才能做所有事情,就像屏幕鎖定。

您可以看到屏幕頂部有一個「狀態欄」,此時方向爲「portrait」。因此,在將「屏幕鎖定」稍微向下滾動後,您可以看到活動(如TEETER)處於「portrait」狀態。當您一直向下滾動時,活動的方向將突然變爲「landscape」狀態。

所以結論是:我的活動被迫定位一次。我真的想知道如何解決它!

+0

爲什麼你在那裏android:configChanges =「orientation」?如果您的活動固定爲一個方向,則不需要它。但是對於你的問題,我不知道 - 你是否也在其他設備上或者在模擬器上進行了測試,是否也出現了問題? – 2010-10-29 08:26:52

+0

這是爲了「不讓我的活動死亡,重新開始」。 – 2010-10-29 15:13:44

回答

1

Hai Steven Shih: 請仔細閱讀開發者指南的這個頁面。

http://developer.android.com/guide/topics/manifest/activity-element.html 

,並嘗試這條線

android:windowSoftInputMode="stateUnspecified|adjustPan" 
+0

@Steven Shih:Hai Steven Shih你是否試過這個,還是你面臨問題 – 2010-10-29 13:40:15

+0

嗨,我試過了。這並不能解決我的問題。 – 2010-10-29 14:51:38

0

不知道這是否可以被稱爲一個解決方法,但它是一種變通辦法。

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    if (hasFocus) 
     setContentView(mGameView); 
    else 
     setContentView(mEmptyView); 
} 

其中mGameView是您的普通內容,而mEmptyView只是一個簡單的View對象。該活動仍然會以一幀或兩幀的縱向繪製,但對用戶不可見。

我已經與HTC Hero的和Nexus S.

1

不知道這是否是同樣的問題,但在這裏測試的是這樣的問題,我有:

  • 我強迫方位景觀在清單
  • 我的活動有兩個surfaceviews(相機預覽和在它上面的一層)
  • 按下電源按鈕,回來後,我的觀點錯了方向一下子

這似乎是同樣的問題,另外一個問題:Disable orientation but detect orientation

我認爲問題是,一旦你按下電源按鈕,鎖屏強制方向爲縱向。在onConfigurationChanged中,當我按下電源按鈕時,我得到一個方向更改,這是意外的,因爲我告訴明確鎖定方向。事實是,當前面的另一個活動強制定位時,即使他們要求明確定位,其他活動也會收到定位更改的通知。

這裏是我的解決方法:

    中的onPause
  • ,斷開與removeView的意見(我的應用程序編程方式創建的視圖,而不是一個XML佈局)中的onResume
  • ,首先檢查如果方向是一個你請求(getResources()。getConfiguration()。orientation)。如果是這種情況,請重新附加視圖(addContentView或其他)。
  • 如果方向不是您期望的方向,則調用setRequestedOrientation
  • onConfigurationChanged將被調用以告知方向已更改爲您請求的方向。此時,您可以使用setContentView重新附加視圖。

似乎有點複雜,但是這就是我在我的特定情況下穿過去,因爲我的觀點是動態創建的,並直接連接到該活動的默認的FrameLayout。也許我因此錯過了一些默認行爲,但這樣我就可以實現我所尋找的反應性。