2010-09-16 77 views

回答

585

在清單中,爲所有的活動設置此:

<activity android:name=".YourActivity" 
    android:configChanges="orientation" 
    android:screenOrientation="portrait"/> 

讓我解釋一下:

  • 隨着android:configChanges="orientation"告訴你的Android,你會負責的取向的變化。
  • android:screenOrientation="portrait"您設置了默認的方向模式。
+37

豈不是很好如果我們可以爲應用程序中的所有活動設置一個「全局」方向?看起來像我們沒有選擇,但複製/粘貼每個活動的「肖像」屬性... – 2013-04-18 21:58:45

+41

它足以設置'android:screenOrientation =「portrait」' – Till 2013-08-29 11:35:52

+7

@EduardoCoelho你實際上可以創建一個基類'PortraitActivity'並且onCreate調用'setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)'所有擴展它的活動都不會旋轉 – Twinone 2014-06-06 09:07:27

39

在Android清單文件,把屬性爲您<activity>android:screenOrientation="portrait"

-4

我用

android:screenOrientation="nosensor" 

,如果你不希望支持上下顛倒肖像模式下,它是有幫助的。

+0

如果這樣做我認爲它確實如此,它並不真正強制屏幕上的肖像,你可能想要做的。 – 2014-11-21 09:27:15

+0

你爲什麼不刪除這個評論!它沒有意義 – 2015-11-02 10:51:27

20

有兩種方式,

  1. 每個活動添加android:screenOrientation="portrait"清單文件
  2. 在每個Java文件添加​​。
+9

第二個選項有一個可怕的副作用,它將在人像中開始時重新開始活動。 – Joakim 2016-04-29 13:04:09

3

舊帖子我知道。爲了在縱向模式下始終以縱向模式運行應用程序(即使方向可能正在交換或交換等)(例如在平板電腦上),我設計了此功能,用於將設備設置爲正確方向,而無需知道縱向和橫向功能在設備上組織。

private void initActivityScreenOrientPortrait() 
    { 
     // Avoid screen rotations (use the manifests android:screenOrientation setting) 
     // Set this to nosensor or potrait 

     // Set window fullscreen 
     this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     DisplayMetrics metrics = new DisplayMetrics(); 
     this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 

     // Test if it is VISUAL in portrait mode by simply checking it's size 
     boolean bIsVisualPortrait = (metrics.heightPixels >= metrics.widthPixels); 

     if(!bIsVisualPortrait) 
     { 
      // Swap the orientation to match the VISUAL portrait mode 
      if(this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
      { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } 
      else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } 
     } 
     else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); } 

    } 

工程就像一個魅力!

注意: 變化this.activity您的活動或將其添加到主活動,並刪除this.activity ;-)

-6

在清單中,爲所有的活動設置此:

<activity android:name=".YourActivity" 
    android:configChanges="orientation" 
    android:screenOrientation="portrait"/> 
+11

您應該刪除該答案,因爲您已經發布了具有相同信息的其他答案。 – Mangesh 2015-11-18 11:24:48

相關問題