如果 Android 上的初始方向是横向,则 mainActivity 会被销毁

mainActivity gets distroyed if initial orientation is landscape on Android

我正在开发一个所有活动都设置为的应用程序:

1
   android:screenOrientation="portrait"

会发生以下情况:

Tablet is in portrait mode BEFORE the app starts:

  • startScreen 以纵向模式创建
  • 一个导航到另一个纵向屏幕
  • 一个回到 startScreen - 它是在纵向模式下创建的 - 一切正常

And this is what happens when the tablet is in landscape mode when
the app starts:

  • startScreen 以纵向模式创建
  • 一个导航到另一个纵向屏幕
  • 回到 startScreen - 它是在 LANDSCAPE 模式下创建的,只是在几分之一秒内立即关闭,并且活动被破坏 - 然后最终活动在纵向模式下创建

我怎样才能避免在横向模式下在几分之一秒内创建这种创建并立即仅在纵向模式下创建?

非常感谢


在活动标签中添加清单:android:configChanges="orientation"。现在它不会按方向重新启动。

这只是一个理论,但是如果您首先以横向模式查看屏幕,您也许可以覆盖您的根视图并覆盖 onDraw 方法。
检查你的画布宽度和高度。
如果高度大于宽度,则不要绘制或设置可见性为假。
直到您收到"正确的"画布以进行绘制。

这可能有点矫枉过正,但我??认为可以做到。

还可以在这里寻找更多可能改变屏幕方向的东西:
http://developer.android.com/guide/topics/manifest/activity-element.html#screen

还有一个来自 API 14 及更高版本的(我认为)给我带来了很多问题,那就是 "ScreenSize"。


以纵向模式创建您的 Activity,并在 onResume 方法中更改为横向模式。

1
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);