2010-07-25 106 views
2

當我按下按鈕時,我想禁用屏幕旋轉對我所有的活動。我怎樣才能做到這一點?在Android上禁用屏幕旋轉

順便說一下,手機可以位於風景或肖像的位置,當用戶點擊按鈕。

回答

3

我已經找到了解決辦法:

中的manifest.xml:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" android:name="MyApplication"> 

在MyApplication.java:

public class UPackingListApplication extends Application { 

    public void onConfigurationChanged(Configuration newConfig) { 
     newConfig.orientation = [orientation we wanna to use (according to ActivityInfo class)]; 
     super.onConfigurationChanged(newConfig); 
    } 


} 
+0

我已經在活動級別嘗試過這一點,它可以將內部方向跟蹤設置爲任何設置,但在實際停止方向變化或能夠物理設定方向方面,它似乎不起作用。 – 2011-02-25 21:04:44

+0

你有另外的想法嗎? – davs 2011-02-26 14:10:58

4

您可以將您的AndroidManifest.xml改變

<activity android:name="MainActivity" android:configChanges="orientation"> 

它通知你會處理這些配置的變化的OS(無爲)

How do I disable orientation change on Android?

+0

我綁如下: 在清單1): 2): \t @Override \t公共無效onConfigurationChanged(配置NEWCONFIG){ \t \t \t newConfig.orientation = Configuration.ORIENTATION_LANDSCAPE; \t \t super.onConfigurationChanged(newConfig); \t} 但是無論如何活動的屏幕在設備旋轉時會旋轉。 我錯了什麼? – davs 2010-07-25 13:50:14

+1

您也可以調用super.onConfigurationChanges()來更改方向,從而旋轉屏幕。使用if結構來確定方向/鍵盤狀態是否已更改;你應該只爲其他更改調用超級。 – 2010-07-25 17:20:54

+0

無論你是否稱爲超級,這並不重要。此回調時已發生配置更改;它只是被稱爲告訴你。 – hackbod 2010-07-25 18:40:48

12

setRequestedOrientation(ActivityInfo。 SCREEN_ORIENTATION_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

+0

如果我添加這一行,它是否適用於所有應用程序?或者它會爲活動工作? – davs 2010-07-27 11:41:46

+0

它似乎只適用於活動,我調用此代碼,直到我移動到另一個活動(當我返回到此活動時,defalut設置應用)..我認爲這是不好的做法來調用這樣的代碼(檢查,如果我們需要旋轉和旋轉屏幕)對於onResume/onSatrt方法中的所有活動 – davs 2010-07-27 12:11:37