如何使应用程序忽略屏幕方向更改?

有没有办法让应用程序完全忽略屏幕方向的变化?

当键盘打开/closures时,可以很容易地覆盖默认行为并禁止屏幕方向更改。

修改清单

打开清单,切换到“应用程序”选项卡,然后select您希望覆盖方向更改行为的所需活动。

  1. 在属性内,您需要更改两个字段:屏幕方向:select纵向或横向 – 以所需者为准。 这将是默认布局。

  2. select您想覆盖的configuration更改事件:在这种情况下,这些是键盘隐藏和方向。

修改活动实施

现在您需要在期望的Activity中覆盖单个函数。

只需将下面的函数添加到您的活动的类。

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } 

如果使用Source->Override/Implement Methods菜单选项,这是默认实现。

而已! 现在你的方向将永远保持。

记住,这个设置是每个活动 – 所以你需要重复这个步骤为每个活动你想禁止方向改变!

(基于SDK 1.1)

您可以使用以下行(在活动中调用)进行相同的代码更改:

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

一旦你打这个电话,你的应用程序将保持横向(或纵向)模式。 您可以使用相同的调用(使用不同的ActivityInfo枚举),使其对方向再次变化敏感。

关于开发面向Android的应用程序的主题,有一篇完整的DevX文章。

(警告:因为我已经发布了这个链接,DevX已经build立了一个注册墙。)

如果您正在通过AndroidManifest.xmlsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 您将遇到与平板电脑有关的问题。 他们的自然/默认取向是风景。

如果你真的想完全忽略屏幕方向的变化,我会使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); 值。 我在堆栈溢出问题Android天然传感器方向帮助中谈论更多。

这里是xml:

 <activity android:name=".MyActivity" android:screenOrientation="nosensor" android:configChanges="orientation|keyboardHidden|keyboard"/> 

您可以像这样在AndroidManifest.xml文件中定义您的活动:

 <activity android:name=".MyActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden|keyboard"/>` 

在这种情况下,您应该为每个活动设置属性。 我没有find所有应用程序的内联解决scheme。

 <activity android:screenOrientation="portrait"></activity> 

将此添加到活动中:

android:configChanges="orientation|screenSize"

你想读取当前的方向,并在整个活动的整个生命周期中保持这种状态,所以我在onCreate结束时做了以下操作:

 // choose an orientation and stay in it if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);