2

我已经搜索了很长时间,但没有任何效果。我有一个活动,我希望在活动的整个生命周期内锁定它的方向。这个方向必须是开始方向。我的意思是,当活动从任何方向开始时,它必须忽略方向变化。我怎样才能做到这一点 ?谢谢回复。。

4

4 回答 4

3

通过代码,您可以为您的活动“onCreate”调用请求方向,如下所示:

   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

您可以像这样读取当前方向:

   getResources().getConfiguration().orientation;

因此,您可以读取当前方向并要求它保持不变:

   int orientation = getResources().getConfiguration().orientation;
   setRequestedOrientation(orientation);

您还可能希望通过在清单中添加 configChanges:orientation 来禁用来自方向更改的活动生命周期事件:

   <activity android:name="MyActivity"
      android:configChanges="orientation">
       ...
   </activity>
于 2013-09-19T08:57:13.103 回答
0

另一种选择是:onConfigurationChanged()像这样覆盖如何在 android 2.3.3 中使用 onConfigurationChanged() 和 newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE

但不要打电话super.onConfigurationChanged(newConfig)

于 2013-09-19T09:00:07.577 回答
0

将该行添加android:configChanges="orientation"到清单文件中的活动部分。这将告诉 Android 您想自己处理方向更改。

然后实现onConfigurationChanged()你的activity的方法,随意处理变化。在你的情况下,你可能只是什么都不做。

于 2013-09-19T09:00:08.280 回答
-1

在每个活动下的清单中添加以下行

<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>
于 2013-09-19T08:49:03.213 回答