Как заставить приложение игнорировать изменение ориентации экрана?
Есть ли способ сделать приложение полностью игнорировать изменение ориентации экрана?
- Программно проверьте Play Store для обновлений приложений.
- Текст маркировки на Android
- прослушивание событий прокрутки horizontalscrollview android
- Как установить ширину и высоту DialogFragment?
- Как получить токен доступа после входа пользователя из Gmail в Android?
- Как запустить onListItemClick в Listactivity с помощью кнопок в списке?
- Как установить apk на эмулятор в Android Studio?
- Android - java.lang.SecurityException: отказ от разрешения: начало работы
Возможно, довольно легко переопределить поведение по умолчанию и запретить изменение ориентации экрана, когда клавиатура открыта / закрыта.
Изменение манифеста
Откройте манифест, перейдите на вкладку «Приложение» и выберите нужную операцию, которую вы хотите переопределить для поведения изменения ориентации.
-
Внутри атрибутов вам необходимо изменить два поля: Ориентация экрана: выберите портрет или пейзаж – в зависимости от того, что требуется. Это будет макет по умолчанию.
-
Выберите события для изменений 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);