【问题标题】:Android ICS Launcher 4.0.x cannot keep screen orientationAndroid ICS Launcher 4.0.x 无法保持屏幕方向
【发布时间】:2012-05-24 15:31:00
【问题描述】:

我有一个关于 Android ICS Launcher 4.0.x 的奇怪案例。

前置条件:

  • 具有 root 权限的 ICS 设备

  • 下载Android ICS Launcher 4.0.3/4源码(修改运行)

程序:

  1. 进入市场(Play 商店),下载“Go Task Manager”

  2. 在 Launcher 上打开 Widgets 选项卡,找到“Mem Optimize”,拖动到主屏幕(工作区)

  3. 下载安装“水果忍者”

  4. 在主屏幕上的“Mem Optimize”小部件旁边创建“Fruit Ninja”快捷方式。

  5. 执行“水果忍者”并将手机保持在横向(这个位置握在手中,不要改变这个)

  6. 在“水果忍者”的菜单界面,将“退出”切片,选择“是”

  7. 现在回到 Launcher 主屏幕,点击“Mem Optimize”小部件

当前结果:

  • 在第 7 步之后,屏幕会旋转到 LANDSCAPE 片刻,然后返回 PORTRAIT。

期望:

  • 在第 7 步之后,屏幕应保持为 PORTRAIT。

我的尝试(修改 Launcher ICS 源代码):

  • 添加到“Manifest.xml”:android:screenOrientation="portrait" => 仍然无法解决问题。

  • 处理配置更改,android:configChanges="orientation|screenSize" => 仍然无法解决问题。

  • 使用:setRequestedScreenOrientation(PORTRAIT) =>还是不能解决问题。

我在 Android 2.x 上尝试过的工作;但是,从 4.0.3+ 开始,它并没有按预期工作。有人对此有任何想法吗?

【问题讨论】:

  • 我们能有这个缺陷的视频演示吗?
  • 你在manifest的哪里添加了android:screenOrientation?你能把sn-p复制出来吗?

标签: android orientation android-4.0-ice-cream-sandwich


【解决方案1】:

问题不在启动器中。问题是手机上的所有活动都共享一个配置(包括方向)。

因此,如果您有一个将方向设置为 Landspace 的活动,例如相机(这是我工作的经典示例),这将“使”所有其他活动也出现在景观中,因为正如我所说,信息在系统中是唯一的并且在所有人之间共享。

这从 Android 开始就发生了,尽管有时您不会注意到,因为变化非常快。

要检查我在说什么,请执行以下操作。编写一个带有对话框主题的活动,例如 @android:style/Theme.Holo.Dialog,这样它就不会覆盖整个屏幕,您仍然可以看到下面的活动。该活动必须具有固定的方向。假设您将其设置为横向。然后use am start on Android shell 能够启动您刚刚在任何其他活动之上创建的活动。您会看到,无论之前的活动有什么方向,只要您启动测试活动,之前的活动将采用与您的测试活动相同的方向。当您回击时,先前的活动将恢复方向。但有时可能需要一段时间,因此您会看到当前结果等内容。

【讨论】:

    【解决方案2】:

    普通 ICS 启动器有几个地方会将方向设置为未指定。只需在 Launcher.java 中搜索 setRequestedOrientation,但具体而言,它要么在“eng”版本上,要么在平板电脑上。它在 onCreate 中执行此操作,但在从 appscustomize 拖放之后也会执行此操作。

    来自 Launcher.java 的 onCreate:

    // On large interfaces, we want the screen to auto-rotate based on the current orientation
    if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng")) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    }
    

    【讨论】:

    • 嗨,凯文,好久不见!确实代码中的某些地方已经设置了方向,但实际上我已经删除了那些代码,或者将方向设置为PORTRAIT,它仍然不起作用。我仍在深入研究框架以找到它起作用的原因GB 2.x 但在 ICS 4.x 中没有
    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2011-07-17
    • 2012-11-12
    相关资源
    最近更新 更多