[英]Android: detect screen orientation change also if orientation is lock
我有一个带有一个Activity的Android应用程序和一个带有多个片段的自定义ViewPager。 我的整个活动都锁定在人像状态,但是现在我需要在特定片段内检测设备处于横向状态,然后启动另一个锁定于横向状态的活动。 在此新活动中,当用户将设备置于纵向时,我将其关闭并返回至纵向活动。 这是AndroidManifest.xml代码:
<activity
android:name="com.mypackage.MainActivity"
android:configChanges="orientation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light" >
</activity>
这是片段中的代码,应该可以检测横向:
public void onConfigurationChanged(Configuration myConfig) {
int orient = getResources().getConfiguration().orientation;
switch (orient) {
case Configuration.ORIENTATION_LANDSCAPE:
//Launch new activity
break;
}
}
现在我已经注意到,在此清单配置中永远不会调用onConfigurationChanges,但是仅当我删除时才调用
android:screenOrientation="portrait"
有没有一种方法可以使MainActivity保持纵向锁定并拦截横向景观?
现在我注意到从未调用过onConfigurationChanges()
为什么这让您如此惊讶? 您明确禁用了方向更改,因此该方法没有意义。 请注意,方向是指屏幕方向,而不是设备的方向。
当设备处于横向状态并启动另一个锁定于横向状态的活动时
您可以吃蛋糕或保留蛋糕,因此可以强制固定方向或调用onConfigurationChanges()
。
发起另一个锁定的活动
为什么不为同一活动简单地拥有单独的布局文件? 切换将由框架自动处理,因此不需要特殊代码-只需将文件保存在正确命名的文件夹中即可(请参阅文档: https : //developer.android.com/guide/topics/resources/providing-resources.html )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.