Подтвердить что ты не робот

Изменение ориентации экрана в Android без перезагрузки

Я хочу программно изменить ориентацию при работе с Android-приложением с этими строками кода:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

Они работают до сих пор, но основная проблема заключается в том, что вся деятельность перезагружается, когда меняется ориентация экрана, и я не хочу этого. Является ли это возможным? Спасибо.

EDIT: Хорошо, после того, как я узнал, что мне не хватает. Мне пришлось включить также "screenSize" в свойство configChanges, поэтому

android:configChanges="orientation|screenSize"

решил все это.

4b9b3361

Ответ 2

Вам необходимо переопределить onSaveInstanceState (Bundle savedInstanceState) и записать значения состояния приложения, которые вы хотите изменить, в параметр Bundle

Ответ 3

В файле AndroidManifest добавьте android:configChanges="orientation" для действия, которое вы хотите обработать с этой ориентацией

В работе используется метод onConfigurationChange overrided. Задача, с которой вы хотите обрабатывать изменения ориентации.

Ответ 5

Вызвать этот метод и установить файл манифеста

android:configChanges="orientation|screenSize|keyboardHidden"

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

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }