2015-11-03 5 views
-1

Есть ли способ заблокировать различную ориентацию экрана для разных размеров экрана? Так что для экранов с наименьшей шириной менее 600 дп для блокировки ориентации портрета и для экранов с наименьшей шириной более 600 дп для блокировки ориентации на ландшафт? Я понимаю, что это можно сделать программно с помощью setRequestedOrientation, но как это можно сделать в xml-ресурсах? В Android.manifest или путем ссылки на разные значения ресурсов, определенные в папках res?Android - Как заблокировать различную ориентацию экрана для разных размеров экрана в xml-конфигурации

ответ

1

Вариант 1: Используйте следующий код для каждой операции внутри AndroidManifest.xml:

android:screenOrientation="nosensor" 

«nosensor» настройка говорит ваше приложение, чтобы использовать естественную ориентацию устройства, и не изменится, если пользователь вращает устройство. Таким образом, планшеты будут использовать ландшафтную ориентацию для вашего приложения, а телефоны всегда будут использовать портретную ориентацию.

Далее вы можете создать отдельный файл макета для пейзажных родных устройств (например, планшеты), создав в папке res папку с именем layout-land. Поместите файлы макета XML для планшетов в папку макета.

Вариант 2: Используйте наименьшую ширину спецификатор, как описано в документации для разработчиков Android здесь: http://developer.android.com/training/multiscreen/screensizes.html#TaskUseSWQuali

В этом случае вы будете создавать папку макета в каталоге Рез под названием макета sw600dp. Внутри вы поместите свои альтернативные XML-файлы для устройств с более чем 600dp. В верхнем уровне файлов XML для вашей линейной компоновки, или относительно компоновки, например, обязательно включают в себя следующее:

android:orientation="horizontal" 

В ваших основных файлов XML для устройств с менее чем 600dp, вы заставите их к вертикальной ориентации:

android:orientation="vertical" 
+0

Попытался это на простое приложение в соответствии с API 22. Он не имел желаемого эффекта. (Это не предотвратило поворот.) Просто небольшая точка данных. Это, безусловно, может быть для других устройств/уровней API. – Anders8

+0

Вы говорите о опции1 или option2 выше? Из двух решений я бы подумал, что вариант 1 будет более надежным в будущем. – joshgoldeneagle

+0

Отвод! Я пробовал вариант 1 (метод носенсора), но я имел его в разделе . Он не ошибся и отлично разбирался, но, как я уже упоминал, ничего не делал. Ввод его в раздел работает правильно. Как вы сказали, «за каждое мероприятие». – Anders8

Смежные вопросы