Intereting Posts
Блокировка телефона Android после того, как пользователь набирает номер телефона Автоматически отправлять электронную почту Создание рекурсивного итератора ОШИБКА: Не удалось прочитать ключ из хранилища: … Не удается восстановить ключ в Android Studio при создании подписанного APK Как добавить элемент в Android ListView? BroadcastReceiver срабатывает несколько раз (PROVIDERS_CHANGED_ACTION) Как показать клавиатуру номера в EditText в Android? H.264 потоковое воспроизведение в реальном времени, отметка времени в единицах NAL? Сбой в Картах Google, вызванный нулевым указателем в файле android.widget.EdgeEffect. <Init> Курсор EditText в верхнем левом положении. Пользовательский пустой вид в ListView android Android: OptionMenu между активностью и фрагментами Добавление рамки или границы в ImageView и Drop-Shadow Обнаруживать или приближать задержку Bluetooth на Android (воспроизведение аудио) Android listview ленивая загрузка

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

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

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

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

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

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

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

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

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

Просто добавьте функцию ниже в класс 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); стоимость. Я больше об этом расскажу в решении Stack Overflow.

Вот xml:

 <activity android:name=".MyActivity" android:screenOrientation="nosensor" android:configChanges="orientation|keyboardHidden|keyboard"/> 

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

 <activity android:name=".MyActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden|keyboard"/>` 

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

 <activity android:screenOrientation="portrait"></activity> 

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

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);