如何使应用程序忽略屏幕方向更改?
有没有办法让应用程序完全忽略屏幕方向的变化?
当键盘打开/closures时,可以很容易地覆盖默认行为并禁止屏幕方向更改。
修改清单
打开清单,切换到“应用程序”选项卡,然后select您希望覆盖方向更改行为的所需活动。
-
在属性内,您需要更改两个字段:屏幕方向:select纵向或横向 – 以所需者为准。 这将是默认布局。
-
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.xml
或setRequestedOrientation(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);