2010-09-16 86 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

相关问题