2012-02-29 31 views
0

歡迎所有當屏幕方向改變但在清單上強制使用縱向模式時,可以知道它嗎?

我對我的應用程序有特殊需求。我必須強制應用程序只能在肖像模式下工作,但我需要知道用戶何時將手機移至橫向模式。爲什麼?因爲我使用紋理圖像顯示opengl視圖,並且當用戶將手機位置變爲橫向模式時,我必須旋轉多邊形而不重置活動。然後,我必須強制清單上的肖像模式,因爲我不希望我的onCreate方法被再次調用。

請問,有人可以告訴我如何做到這一點?

我知道如何旋轉圖像,我只需要知道用戶何時將手機移動到橫向位置,但在清單上強制顯示肖像。

我嘗試在清單中添加android:screenOrientation =「portrait」,並且還向清單中的聲明中添加了android:configChanges =「keyboardHidden | orientation」然後在我的活動中重寫onConfigurationChanged()。但這好好嘗試一下作品,因爲人像模式forzed,然後onConfigurationChanged方法不會被調用......

感謝

+0

嘗試是:刪除你的Android:screenOrientation =從清單 「肖像」。添加android:configChanges =「keyboardHidden | orientation」,並覆蓋onConfigurationChanged()。這樣你的onCreate不會被調用兩次。 – Derzu 2012-02-29 13:27:55

+0

德祖,請你幫我解釋一下ashok的答案嗎?謝謝 – NullPointerException 2012-02-29 14:40:38

回答

0

在manifest android:configChanges =「orientation」中使用此屬性,這將停止重新創建活動,然後重寫onConfigurationChange()方法。在縱向和橫向模式下都提供相同的佈局。當方向發生變化時,將調用該方法,然後像更改圖像一樣

+0

拜託,有人可以解釋我如何做到這一點:「在縱向和橫向模式下給出相同的佈局。」 – NullPointerException 2012-02-29 14:40:20

0

不要在清單中設置屏幕方向(android:screenOrientation =「portrait」)。添加android:configChanges =「keyboardHidden | orientation」,並覆蓋onConfigurationChanged()。這樣你的onCreate不會被調用兩次。

下面的例子你onConfigurationChanged:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); // tem que ter 
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 

    } else 
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 

    } 
} 
相關問題