Программное включение / отключение поворота экрана в Android

У меня есть приложение, которое отображает большой объем текста для чтения пользователем.

Я обнаружил, что при чтении лежа меня раздражает, что экран вращается, хотя моя голова и экран выровнены.

Я не хочу, чтобы это было постоянно в портретном режиме, поэтому я думаю, что это помешало бы установить

 android:screenOrientation="portrait"

в манифесте.

В идеале я хотел бы включить / отключить автоматическое изменение ориентации через страницу настроек.

Каков мой лучший подход?

12
задан Cœur 2 November 2018 в 12:18
поделиться

1 ответ

Я бы сделал это, записав свою страницу настроек в SharedPreferences для моего приложения, затем прочитав это значение и вызвав Activity.setRequestedOrientation () из кода при загрузке или отображении рассматриваемого текстового представления.

Например:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    if (prefs.getBoolean("fix_orientation_to_portrait", false)) {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    }

Это может быть метод onCreate () или onResume () . Единственная причина не использовать его в методе onCreate () - это если изменение параметра происходит в этом действии или в дочернем действии, которое вернется к этому, когда оно будет выполнено.

Изменить:

Хорошо, если это не сработает (а я не совсем уверен, что это будет), возможно, вы могли бы попробовать создать два разных XML-файла макета - один с установленным screenOrientation, а другой - без него. Когда вы загружаете свой Activity / View, вы можете динамически загружать один или другой в зависимости от ваших сохраненных предпочтений. Это противно не чисто, но должно работать.

18
ответ дан 2 December 2019 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: