manifest.xml中的屏幕方向和值

我希望以横向或纵向方式使用我表单中的所有活动。 当用户选择方向时 – 这对所有活动都有效。 尝试“后面”选项方向。 根据谷歌的定位将取决于以前的活动。 我的第一个活动使用setRequestedOrientation来设置从用户方向中选择的内容。 接下来的活动必须遵循相同的方向。 我是否也必须在其代码中加入setRequestedOrientation? 或者依赖于表现中的“后面”参数? 设置setRequestedOrientation可能会导致onCreate再次出现?

更新:尝试“肖像”和setRequestedOrientation() – resilt si onCreate被调用2次。 问题出现在下一个活动中 – >因为第一个活动中的“肖像” – 安卓启动了具有相同方向的下一个活动。 它忽略了由我设定的“风景”方向:(

如果您想为活动定位,那么您可以使用 –

机器人:screenOrientation = “画像”

android:screenOrientation="sensorPortrait" 

作为该清单中该活动的属性。 但是,如果要在启动应用程序时根据先前的方向设置方向运行时,则需要在onCreate()检查先前的方向,然后使用setRequestedOrientation()以编程方式将其设置为该值。

更新:正如@ s.co.tt指出的那样使用android:screenOrientation="sensorPortrait"来获得更好的平板电脑支持。

有关android:screenOrientation的不同值以及它们各自执行的操作的更多详细信息,请查看文档:

https://developer.android.com/guide/topics/manifest/activity-element.html#screen

       

以编程方式执行,例如在Activity基类中

我尝试了它的移动和平板电脑。 使用任何人的肖像或风景。

 @Override public void onCreate(Bundle savedInstanceState) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //or setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } 

应用程序标记内的manifest.xml

   

要么

   

要处理方向更改,请在AndroidManifest.xml添加以下行: android:configChanges="orientation|screenSize"标记下,如下所示: –

    ----------  ----------  

注意 :每当配置发生更改(例如orientationscreenLayoutscreenSize等)时,活动将重新启动并调用其onCreate方法。 为防止这种情况,我们必须处理配置中的任何更改。

根据我的经验,我建议在onCreate方法的每个活动中使用setRequestedOrientation,onCreate不会再被调用它是安全的。

现在我把检查放在onCreate上:

 m_bSkip = (this.getRequestedOrientation() != MyApp.sInstance.GetScreenOrientation()); if (m_bSkip) return; 

当我输入oncreate并且不希望屏幕方向时 – 退出。 当我进入onCreate并且需要屏幕方向时 – 继续初始化。 这可以修复情况,而无需保持与活动相关的异步任务并检查新活动。 当然所有函数:onStart,onResume,onPausde,onStop ……都必须检查此标志以避免空指针exception。

转到Android Manifest编辑器,在那里你会看到MainActivity.java点击它,在右边 – 你会看到一个新窗口:向下滚动并选择选择方向 – “portrait”