onConfigurationChanged没有调用180度和270度

Vic*_*yan 6 java android screen-orientation kotlin

我的Android设备上遇到了一个奇怪的问题(或者可能是意外的行为).

问题是我正在我的DialogFragment中监听配置更改,如下所示:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Do something secret here :)
}
Run Code Online (Sandbox Code Playgroud)

我添加android:configChanges了Activity,它负责显示对话框片段

<activity
    android:name=".SecretActivity" 
    android:configChanges="orientation|screenSize"
    android:windowSoftInputMode="adjustResize" />
Run Code Online (Sandbox Code Playgroud)

事实上,当我旋转设备时,我正从系统中获得回调,但并非在所有情况下.正如你在onConfigurationChanged( )旋转90度时所看到的图片中所看到的那样,以及360度,在其他情况下它不会被调用.

这是预期的行为吗?如果是,我如何检测所有旋转(90,180,270,360)?

在此输入图像描述

laa*_*lto 6

如果您的活动具有未指定的屏幕方向,则设备通常会忽略180°旋转并且仅支持一个横向方向.

要支持所有方向,请screenOrientation向活动清单条目添加显式属性:user或者sensor,取决于您是否要支持用户锁定设备方向.


not*_*dar 1

嗯,检查清单,添加/修改

android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
Run Code Online (Sandbox Code Playgroud)