【问题标题】:Need orientation locked to landscape, but still need notification when rotated to portrait需要将方向锁定为横向,但在旋转为纵向时仍需要通知
【发布时间】:2015-12-19 07:13:03
【问题描述】:

我正在开发一个需要将屏幕锁定为横向的 Android 应用,因为 UI 仅针对横向设计。但是,屏幕上发生的事情仍然需要知道设备何时旋转到纵向模式。如果我将以下内容放在 AndroidManifest.xml 中:

android:screenOrientation="landscape"

这可以防止屏幕方向更改通知 (onConfigurationChanged) 被触发。但是,如果我将 screenOrientation 设置为“传感器”,则操作系统会自动旋转 UI,而无法阻止它:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    //Can't override newConfig and force landscape? wtf?
    super.onConfigurationChanged(newConfig);
}

我只是以错误的方式接近这个吗?如何保持屏幕横向(防止操作系统自动更改方向)但在方向更改时仍会收到通知?

【问题讨论】:

    标签: android android-layout android-activity orientation


    【解决方案1】:

    我想你想要的是:

    <activity ...
        android:configChanges="orientation"
        ...
    

    根据 Android manifest &lt;activity&gt; 元素的文档:

    android:configChanges

    列出活动将自行处理的配置更改。当运行时发生配置更改时,默认情况下会关闭并重新启动 Activity,但使用该属性声明配置会阻止 Activity 重新启动。相反,活动保持运行并调用其onConfigurationChanged() 方法。

    ...

    值:“方向”

    描述:屏幕方向发生了变化——用户旋转了设备。

    【讨论】:

    • 没错。 Activity 没有重新启动,并且调用了 onConfigurationChanged(),但 OS 仍然旋转屏幕(带动画)。我需要防止操作系统自动旋转 UI,同时仍会收到有关方向已更改的通知。
    • 哦。然后我认为您将不得不指定android:screenOrientation="landscape",然后直接转到陀螺传感器以查看用户如何握住设备。这是我真正没有经验的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多