onConfigurationChanged

onConfigurationChanged

对于摄像头应用程序,我希望避免在方向更改时重新绘制活动。
到目前为止,我一直在使用android:screenOrientation="landscape"

现在,我希望图标根据方向变化旋转。

好吧,这应该非常简单:
首先,上面的代码行被删除。
然后为活动设置清单:

android:configChanges="orientation|screenSize|keyboardHidden"


最后,您在活动中覆盖onConfigurationChanged:

    @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //Do something
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        //Do something
    }
}


现在,AFAIK应该触发onConfigurationChanged而不是重新启动活动(假设它将在onConfigurationChanged中处理)

实际上,当更改方向时,会触发onConfigurationChanged,但会导致不必要的旋转。如何取消呢?我想念什么?

设备:小米Mi2s
API:4.1.1

谢谢,
标记。

最佳答案

您需要防止父级按如下方式处理配置:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(null);
    //TODO: Do nothing when orientation has changed...
}


如您所见,您需要做的就是将null传递给onConfigurationChanged的super方法,因此它实际上将阻止您通过所有想要避免的更改。

问候!

10-08 19:44