如何使 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
换句话说,我希望屏幕同时支持纵向和横向,但只支持在我打开该图像的活动时处于活动状态的那个。我不想在查看时更新配置更改。
我已经尝试了新值 nosensor
和 locked
,但是这两个值都将值硬编码为 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 活动方向坚持起始值?的主要内容,如果未能解决你的问题,请参考以下文章