gpt4 book ai didi

android - onConfigurationChanged 没有被第二次调用

转载 作者:行者123 更新时间:2023-11-29 21:42:48 26 4
gpt4 key购买 nike

我正在使用以下代码在用户旋转设备时更改我的 Activity 方向。这第一次工作正常,但没有再次调用。请指正。

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d("ACTIVITY","CHANGING ORIENTATION"); //No i18n
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.d(TAG, "ORIENTATION CHANGED TO PORTRAIT"); // No I18N
setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.d(TAG, "ORIENTATION CHANGED TO LANDSCAPE"); // No I18N
setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
}
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
Log.d("ACTIVITY","ON RESTORE INSTANCESTATE"); //No i18n
super.onRestoreInstanceState(savedInstanceState);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
Log.d("ACTIVITY","ON SAVE INSTANCESTATE"); //No i18n
super.onSaveInstanceState(outState);
}

最佳答案

在你使用 setRequestedOrientation(...); 之后,你将不再有获得旋转通知的特权。
如果您想在旋转发生时执行特殊操作,您可能需要使用 OrientationEventListener

编辑:
注意:此代码将人像设置为 80-90 度且 >= 320,可以更改。
如果这段代码尚未在那里运行,您可能还需要在 UI 线程上运行 setRequestedOrientation。

你应该这样做:

mOrientationListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_UI) {

@Override
public void onOrientationChanged(int rotation) {
boolean changed = false;

if (((rotation >= 0) && (rotation <= 80)) || (rotation >= 320)) {
setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
} else {
setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
}
}
};
mOrientationListener.enable();

关于android - onConfigurationChanged 没有被第二次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com