Я пытаюсь включить режим «портрет» для своего приложения, потому что мое приложение абсолютно не предназначено для «ландшафтного» режима.
Прочитав некоторые форумы, я добавил эти строки в свой файл манифеста:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:screenOrientation="portrait">
Но это не работает на моем устройстве (HTC Desire). Он переключается с «портрет» на «пейзаж», игнорируя строки из файла манифеста.
После дополнительного чтения форумов я попытался добавить это в свой файл манифеста:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait">
и эта функция в моем классе деятельности:
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Но опять не повезло.
Обратите внимание, что
добавляется в файл манифеста - где определяется активность.
источник
Я думаю, что
android:screenOrientation="portrait"
могут быть использованы для отдельных видов деятельности. Так что используйте этот атрибут в<activity>
теге как:источник
Если у вас много активности, как у меня, в вашем приложении или если вы не хотите вводить код для каждого тега активности в манифесте, вы можете сделать это.
в вашем классе Application Base вы получите обратный вызов жизненного цикла
так что в основном то, что происходит для каждого действия при создании при создании в Application Class, запускается вот код ..
надеюсь, это поможет.
источник
Установить принудительный портретный или альбомный режим , Добавьте линии соответственно.
Импортировать ниже строки:
Добавить ниже линии чуть выше
setContentView(R.layout.activity_main);
Для портрета :
Для Ландшафта :
Это определенно будет работать.
источник
Согласно документации Android, вы также должны часто включать
screenSize
в качестве возможного изменения конфигурации.Кроме того , если вы все включают значение
keyboardHidden
в ваших примерах, если не вы , то также рассмотретьlocale
,mcc
,fontScale
,keyboard
и другие? ..источник
У меня была эта строка в моем AndroidManifest.xml
Который я изменил (только добавил
android:screenOrientation="portrait"
)Это исправило вещи для меня.
источник
Что-то для дополнения: я недавно обновил приложение, предыдущее работало в альбомном и портретном режиме, и я хочу, чтобы обновленная версия работала в портретном режиме, поэтому я добавил
к соответствующей деятельности, и он просто потерпел крах, когда я тестировал обновление. Потом я добавил
тоже, и это работает.
источник
Я думаю, что вы хотите добавить
android:configChanges="orientation|keyboardHidden"
в свою деятельность? В противном случае действие перезапускается при изменении конфигурации. ТогдаonConfigurationChanged
бы не называли, толькоonCreate
источник
Если вы хотите поддерживать разные ориентации
debug
иrelease
сборки, напишите об этом (см. Https://developer.android.com/studio/build/gradle-tips#share-properties-with-the-manifest ).В
build.gradle
вашейapp
папке напишите:Тогда
AndroidManifest
вы можете использовать эту переменную «ориентация» в любомActivity
:Вы можете добавить
android:configChanges
:manifestPlaceholders = [configChanges: "", orientation: "fullSensor"]
в отладке иmanifestPlaceholders = [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"]
в выпуске,источник
Краткий ответ: не делай этого.
Перепроектируйте свое приложение, чтобы оно могло работать как в портретном, так и в ландшафтном режиме. Там нет такого понятия, как пользовательский интерфейс, который не может быть разработан для работы как в портретной и альбомной ориентации; только ленивые или невообразимые разработчики.
Причина довольно проста. Вы хотите, чтобы ваше приложение было доступно максимально широкой аудитории на максимально возможном количестве различных устройств. Устанавливая определенную ориентацию экрана, вы не позволяете приложению запускаться (удобно) на устройствах, которые не поддерживают эту ориентацию, и вы расстраиваете и отталкиваете потенциальных клиентов, которые предпочитают другую ориентацию.
Пример: вы разрабатываете свое приложение для включения портретного режима. Клиент загружает приложение на устройство 2-в-1, которое они используют преимущественно в альбомном режиме.
Последствие 1. Ваше приложение непригодно для использования или ваш клиент вынужден отстыковывать свое устройство, поворачивать его и использовать в незнакомой или неудобной для него ориентации.
Следствие 2. Клиент разочарован неинтуитивным дизайном вашего приложения и находит альтернативу или полностью отказывается от приложения.
Я борюсь с этим с приложением прямо сейчас и как потребитель и разработчик, я ненавижу это. Как бы ни было полезно приложение, какими бы фантастическими ни были функции, которые оно предлагает, я абсолютно ненавижу приложение, потому что оно заставляет меня использовать ориентацию, которая противоречит любому другому способу использования моего устройства.
Вы не хотите, чтобы ваши клиенты ненавидели ваше приложение.
Я знаю, что это не дает прямого ответа на вопрос, поэтому я хочу объяснить это немного подробнее для тех, кому интересно.
Разработчики имеют тенденцию быть действительно хорошими в написании кода и действительно ужасными в дизайне. Этот вопрос, хотя и звучит как вопрос о коде, и спрашивающий наверняка чувствует, что это вопрос о коде, на самом деле является вопросом дизайна.
Вопрос действительно заключается в том, должен ли я заблокировать ориентацию экрана в моем приложении? Аскер выбрал дизайн интерфейса, чтобы он функционировал и выглядел хорошо только в портретном режиме. Я подозреваю, что это сэкономило время на разработку или потому, что рабочий процесс приложения особенно благоприятен для портретного макета (обычного для мобильных игр). Но эти причины игнорируют все действительно важные факторы, которые мотивируют правильный дизайн.
Взаимодействие с клиентами - вы хотите, чтобы ваши клиенты чувствовали себя втянутыми в ваше приложение, а не выталкиваемыми из него. Приложение должно плавно переходить от того, чем занимался ваш клиент до открытия приложения. (По этой причине большинство платформ имеют согласованные принципы проектирования, поэтому большинство приложений выглядят более или менее одинаково, хотя и не обязаны).
Отзывы клиентов - вы хотите, чтобы ваши клиенты положительно реагировали на ваше приложение. Они должны наслаждаться этим. Даже если это приложение для начисления заработной платы за работу, им должно быть приятно открыть его и посмотреть на него. Приложение должно сэкономить время ваших клиентов и уменьшить разочарование по поводу альтернатив. (Приложения, которые раздражают пользователей, вызывают недовольство вашим приложением, которое перерастает в недовольство вашим брендом.)
Конверсия клиентов - вы хотите, чтобы ваши клиенты могли быстро и легко переходить от просмотра к взаимодействию. Это конечная цель любого приложения - преобразовать показы в доход. (Приложения, которые не приносят доход, являются пустой тратой вашего времени на создание с точки зрения бизнеса.)
Плохо разработанный пользовательский интерфейс снижает вовлеченность клиентов и реагирование, что в конечном итоге приводит к снижению доходов. В мире, ориентированном на мобильные устройства (и особенно на тему режимов портретной и альбомной ориентации), это объясняет, почему адаптивный веб-дизайн так важен. Walmart Canada представила адаптивный дизайн на своем сайте в ноябре 2013 года и увидела 20% увеличение конверсии клиентов. O'Neill Clothing внедрила адаптивный веб-дизайн, и выручка от клиентов, использующих устройства iOS, увеличилась на 101,25% , а для клиентов, использующих устройства Android , - на 591,42% .
Существует также тенденция разработчиков сосредоточиться на реализации конкретного решения (например, блокировка ориентации экрана), и большинство разработчиков на этом сайте будут очень рады помочь реализовать это решение, не задаваясь вопросом, является ли это даже лучшим Решение проблемы.
Блокировка ориентации экрана - это дизайн пользовательского интерфейса, эквивалентный реализации цикла do-while. Вы действительно уверены, что хотите сделать это таким образом, или есть лучшая альтернатива?
Не заставляйте ваше приложение в режиме одного дисплея. Вложите дополнительное время и усилия, чтобы сделать его отзывчивым.
источник