Как заставить приложение игнорировать изменение ориентации экрана?

Есть ли способ сделать приложение полностью игнорировать изменение ориентации экрана?

Возможно, довольно легко переопределить поведение по умолчанию и запретить изменение ориентации экрана, когда клавиатура открыта / закрыта.

Изменение манифеста

Откройте манифест, перейдите на вкладку «Приложение» и выберите нужную операцию, которую вы хотите переопределить для поведения изменения ориентации.

  1. Внутри атрибутов вам необходимо изменить два поля: Ориентация экрана: выберите портрет или пейзаж – в зависимости от того, что требуется. Это будет макет по умолчанию.

  2. Выберите события для изменений Config, которые вы хотите переопределить: в этом случае это клавиатура с поддержкой и ориентацией.

Изменение действия

Теперь вам нужно переопределить одну функцию в пределах желаемой активности.

Просто добавьте функцию ниже в class Activity.

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

Это реализация по умолчанию, если вы используете Source->Override/Implement Methods .

Это оно! Теперь ваша ориентация всегда будет сохранена.

Помните, что этот параметр относится к каждой операции – поэтому вам нужно повторить этот шаг для каждого действия, которое вы хотите запретить изменение ориентации!

(На основе SDK 1.1)

Вы можете внести одинаковые изменения в код со следующей строкой (называемой активностью):

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

После того, как вы сделаете этот звонок, ваше приложение останется в ландшафтном (или портретном) режиме. Вы можете использовать один и тот же вызов (с другим перечислением ActivityInfo), чтобы сделать его чувствительным к перемещению ориентации снова.

В разделе « Разработка ориентированных на ориентацию приложений для Android » есть полная статья DevX по этой теме.

(ПРЕДУПРЕЖДЕНИЕ: поскольку я разместил эту ссылку, DevX установил регистрационную стену.)

Если вы устанавливаете либо AndroidManifest.xml либо setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); вы столкнетесь с проблемами с планшетами . Их естественная / стандартная ориентация – пейзаж.

Если вы действительно хотите полностью игнорировать изменения ориентации экрана, я бы использовал эту setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); стоимость. Я больше об этом рассказываю в вопросах переполнения стека.

Вот xml:

  

Вы можете определить свою активность в файле AndroidManifest.xml следующим образом:

 ` 

В этом случае вы должны установить свойство для каждого вида деятельности. Я не нашел встроенного решения для всех приложений.

  

Добавьте это в свою деятельность:

android:configChanges="orientation|screenSize"

Вы хотите прочитать текущую ориентацию и сохранить ее таким образом на протяжении всей жизни своей деятельности, так что я сделал следующее, в конце onCreate:

 // choose an orientation and stay in it if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
  • admob получать ответ объявления. ErrorCode: 0 Не удалось загрузить объявление: 0
  • Android скрывает / скрывает значок приложения программно
  • Bitmap getWidth возвращает неверное значение
  • Как реализовать onBackPressed () & intents в fragmentе?
  • TextView.setTextSize ведет себя ненормально - как установить размер текстового изображения динамически для разных экранов
  • Android не может передавать намерения, кроме AlarmManager
  • Строка состояния становится белой и не отображает содержимое за ней
  • Режим Wakelock и doze
  • Запрос данных от firebase
  • Как позвонить в список контактов Android И выбрать один номер телефона со своего экрана сведений?
  • передача аргумента в DialogFragment
  • Давайте будем гением компьютера.