【问题标题】:Lock screen orientation in android在android中锁定屏幕方向
【发布时间】:2012-12-23 02:31:32
【问题描述】:

我希望我的活动在设备转动时不旋转。 使用

android:screenOrientation="nosensor"

确实禁用了方向更改,但有一个警告:活动切换到纵向模式。我只是希望它保持当前方向(例如,如果在活动开始时屏幕处于横向,那么即使设备旋转也保持横向模式)。这不是“无传感器”似乎在做的事情。它似乎只是与“肖像”完全相同的行为。是不是我用错了?

我尝试过使用setRequestedOrientation( getRequestedOrientation ),但如果当前请求的方向未定义,那么我的活动将旋转。我只想“锁定”有效的屏幕旋转。

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以做的是告诉 Android 您将自行处理方向配置更改。您可以通过为activity 标记的android:configChanges 属性指定orientation 来做到这一点。

    <activity android:name=".MyActivity"
              android:configChanges="orientation"
              android:label="@string/app_name">
    

    查看此链接了解更多信息。
    http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

    至于为什么nosensor 不起作用,是因为它在文档中如下所述。

    方向是在不参考物理的情况下确定的 方向传感器。传感器被忽略,因此显示不会 根据用户移动设备的方式旋转。除了这个 区别,系统选择方向使用相同的策略 至于“未指定”的设置。

    关于unspecified 在文档中的内容

    默认值。系统选择方向。它的政策 用途,因此在特定情况下做出的选择可能会有所不同 从设备到设备。

    【讨论】:

    • 一旦我覆盖了onConfigurationChanged,如何防止屏幕旋转?据我所知,它允许我在配置更改时做额外的事情,但不能替换现有的行为。如果我删除对super.onConfigurationChanged 的调用,我会收到异常。我追求的是像stackoverflow.com/questions/6599770/… 这样可靠的东西。
    • 您是否尝试过将android:configChanges="orientation 保留在标签中,但覆盖onConfigurationChanged 事件?
    • 是的。这相当于让super.onConfigurationChanged 处理事件,这意味着显示将被旋转。
    猜你喜欢
    • 2011-06-08
    • 2011-09-29
    • 1970-01-01
    • 2014-01-13
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多