Я разрабатываю приложение, в котором пользователь может установить ориентацию экрана вручную. Я сохраняю выбранную ориентацию через SharedPreferences следующим образом:
public static void setOrientation(Context context, String orientation) {
SharedPreferences settings = context.getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(SHARED_PREFS_ORIENTATION, orientation);
editor.apply();
}
В каждом из действий, которые я запускаю в своем приложении, я использую следующий код для установки ориентации экрана:
String orientacion = AirviewAppHelper.getOrientation(this);
if (orientacion.equals( AirviewAppHelper.PORTRAIT)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientacion.equals(AirviewAppHelper.LANDSCAPE)) {
if (AirviewAppHelper.comprobar_orientacion(this) == 0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Каждый раз, когда запускаются действия, они отображаются в портретном режиме в течение нескольких секунд, прежде чем они устанавливают выбранную ориентацию. после поиска разных ответов я добавил эту строку в тег приложения в AndroidManifest.xml
:
android:configChanges="orientation|screenSize|keyboardHidden"
Но поведение не изменилось. Заранее спасибо!