繁体   English   中英

Android:如果方向锁定,也会检测屏幕方向变化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM