【问题标题】:mainActivity gets distroyed if initial orientation is landscape on Android如果 Android 上的初始方向是横向,则 mainActivity 会被销毁
【发布时间】:2012-11-30 16:02:23
【问题描述】:

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

   android:screenOrientation="portrait" 

会发生什么:

在应用启动前,平板电脑处于纵向模式:

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

这就是平板电脑处于横向模式时发生的情况 应用启动:

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

我怎样才能避免在 LANDSCAPE 模式下创建几分之一秒,然后立即以纵向模式创建?

非常感谢

【问题讨论】:

    标签: android screen-orientation


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 现在好多了 - 至少 initialScreen 活动没有被破坏 - 但是,它仍然首先创建横向然后转向纵向......(顺便说一下,我使用的是 3.1 级别 12,以防万一很重要)
    • 这很奇怪。它创建然后销毁它(经历活动生命周期)或者你只是看到它一秒钟然后它进入肖像(不经历生命周期)?此外,我编辑了我的答案并添加了另一个可能导致重新启动的内容,并可能修复了先看不到风景的问题。
    【解决方案2】:

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

    myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    

    【讨论】:

    • 我不明白 - 我希望我的活动保持纵向 - 而不是横向。无论如何,我创建了 onResume 并设置为纵向模式,但屏幕仍然首先以横向创建,然后被破坏,以纵向重新创建....
    • 当您在onCreate 中执行此操作时会发生什么?它还会切换吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    相关资源
    最近更新 更多