如何使 android 活动方向坚持起始值?

Posted

技术标签:

【中文标题】如何使 android 活动方向坚持起始值?【英文标题】:How do I make android activity orientation stick to starting value? 【发布时间】:2020-07-24 15:54:00 【问题描述】:

在我们开始之前,这不是这个旧问题的重复:android: How to stick to the same orientation the Activity started with,我的用例更具体一些,并且由于提出并回答了另一个问题,因此有了新的选项

我的应用中有一个“查看图像”屏幕。屏幕可在任一方向工作,但在查看图像期间不应改变:

如果我有手机portrait并打开查看屏幕,图像应该会显示portrait 如果我然后将手机旋转到landscape,图像仍应显示portrait 如果我退出并用landscape的手机重新进入屏幕,图像应该会显示landscape 如果我退出,将手机旋转到portrait并重新进入屏幕,图像应该会再次显示portrait

换句话说,我希望屏幕同时支持纵向和横向,但只支持在我打开该图像的活动时处于活动状态的那个。我不想在查看时更新配置更改。

我已经尝试了新值 nosensorlocked,但是这两个值都将值硬编码为 0 度,我看不到实现差异。我不相信我可以在活动/片段生命周期内以编程方式检查方向,因为这发生在所有内容都被拆除并重新创建之后。我需要清单的解决方案 - 是否存在这样的设置?或者以编程方式执行此操作,同时避免在不保留实例的情况下重新创建/重绘我的视图?

【问题讨论】:

【参考方案1】:

我认为你可以通过Manifest 来实现这一点

<activity android:name=".FirstActivity" android:screenOrientation="user">
    <intent-filter>
        <action android:name="android.intent.action.Main" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".SecondActivity" android:screenOrientation="locked">
    <intent-filter>
        <action android:name="android.intent.action.View" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

来源:activity-element,栏目android:screenOrientation

"locked" 将方向锁定为其当前旋转,无论是什么。在 API 级别 18 中添加。

【讨论】:

谢谢,稍后我会试一试,以防万一我错了,但我之前尝试过锁定,它锁定在 0 度(可能是在启动 APP 时锁定到状态),而不是锁定到启动 ACTIVITY 时的当前状态。无论如何都值得一看 这行得通!并且应该被接受为正确答案。

以上是关于如何使 android 活动方向坚持起始值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使线性布局坚持到 Android 中的 ImageView?

Android:如何使活动返回结果给调用它的活动?

android从放弃到坚持放弃第二课(下)

如何禁用主要活动的方向更改? [复制]

横向方向的android偏好活动填充

android 如何使LinearLayout内控件的排列方向为自下至上