在开始之前,这不是这个较早的问题的重复:Android: How to stick to the same orientation the Activity started with,我的用例更加具体,自从提出并回答了另一个问题以来,新的选项就可用了
我的应用中有一个“查看图片”屏幕。屏幕可以在任一方向上工作,但在查看图像期间不应更改:
portrait
并打开查看屏幕,则图像应显示为portrait
landscape
,则图像仍应显示为portrait
landscape
中退出并重新进入手机屏幕,则图像应显示为landscape
portrait
并重新进入屏幕,则图像应再次显示为portrait
换句话说,我希望屏幕同时支持纵向和横向,但只支持当我打开该图像的活动时处于活动状态的那个。我不想在查看时通过配置更改进行更新。
我已经尝试过新值nosensor
和locked
,但是这两个值都将其硬编码为0度,因此看不到实现上的差异。我不相信我可以在活动/片段生命周期内以编程方式检查方向,因为这种情况发生在所有东西都被拆除并重新创建之后。我需要清单的解决方案-是否存在这样的设置?还是在不保留实例的情况下避免重新创建/重绘视图的编程方式?
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中添加。