2011-04-29 95 views
1

所以我希望我的應用始終鎖定設備的自然方向。所以基本上,我想強制旋轉到0度。有一個getRotation()方法在這裏:有沒有辦法做一個「setRotation()」方法或代碼?

http://developer.android.com/reference/android/view/Display.html

然而,沒有setRotation(INT旋轉),將接受這裏找到Surface.ROTATION_X參數之一: http://developer.android.com/reference/android/view/Surface.html

那麼,有沒有一些方法來做到這一行代碼將始終工作?或者這是否必須用一些代碼來完成?

作爲手動解決方案我唯一能想到的是以下內容,但我對此有一些擔憂。

我可以使用display.getRotation()。然後我會檢查它是0還是180度,之後我會得到顯示高度和寬度,並查看哪一個比另一個長。如果看起來我處於橫向模式,那麼我會知道設備的自然方向是風景,所以我可以將其設置爲風景。但是如果旋轉角度是270°或90°,那麼我會知道自然的方向是肖像,我可以將它設置爲肖像。

但是,我的擔心是在哪裏做到這一點,以便它始終有效。假設用戶在執行這段代碼時旋轉屏幕,如果設備在使用方法之間改變方向,並使用if語句檢查寬度與高度之間的差異,我認爲它可以扔掉一切。如果我把這個放在onCreate()onResume()會怎麼樣?事情可能會擺脫怪物嗎?

由於用戶轉動設備,屏幕重新定向是否可能導致onCreate()onResume()中斷?另一個問題是,如果將設備翻轉180度,該活動永遠不會被破壞,所以我認爲這種情況的行爲可能是90度轉彎或180度轉彎。

回答

1

您可以在清單中「設置」屏幕方向。在這裏看到:http://developer.android.com/guide/topics/manifest/activity-element.html#screen

<activity 
    android:name=".Activity" 
    android:screenOrientation="portrait" 
    android:theme="@style/Theme.D1" 
    android:label="@string/title_activity"/> 

你可能尋找的是價值; 「用戶」用戶當前的首選方向。不過,我會在幾個測試用例上進行測試。 HTH!

+0

我看,IT也可能是「未說明」。我會嘗試這兩個,謝謝 – 2011-04-29 13:56:41

+0

我認爲「未指定」類似於默認。無論如何,它更好地測試,不要猜測。 – Martinez 2011-04-29 21:42:19

相關問題