Краткий ответ: не делай этого.
Перепроектируйте свое приложение, чтобы оно могло работать как в портретном, так и в ландшафтном режиме. Там нет такого понятия, как пользовательский интерфейс, который не может быть разработан для работы как в портретной и альбомной ориентации; только ленивые или невообразимые разработчики.
Причина довольно проста. Вы хотите, чтобы ваше приложение было доступно максимально широкой аудитории на максимально возможном количестве различных устройств. Устанавливая определенную ориентацию экрана, вы не позволяете приложению запускаться (удобно) на устройствах, которые не поддерживают эту ориентацию, и вы расстраиваете и отталкиваете потенциальных клиентов, которые предпочитают другую ориентацию.
Пример: вы разрабатываете свое приложение для включения портретного режима. Клиент загружает приложение на устройство 2-в-1, которое они используют преимущественно в альбомном режиме.
Последствие 1. Ваше приложение непригодно для использования или ваш клиент вынужден отстыковывать свое устройство, поворачивать его и использовать в незнакомой или неудобной для него ориентации.
Следствие 2. Клиент разочарован неинтуитивным дизайном вашего приложения и находит альтернативу или полностью отказывается от приложения.
Я борюсь с этим с приложением прямо сейчас и как потребитель и разработчик, я ненавижу это. Как бы ни было полезно приложение, какими бы фантастическими ни были функции, которые оно предлагает, я абсолютно ненавижу приложение, потому что оно заставляет меня использовать ориентацию, которая противоречит любому другому способу использования моего устройства.
Вы не хотите, чтобы ваши клиенты ненавидели ваше приложение.
Я знаю, что это не дает прямого ответа на вопрос, поэтому я хочу объяснить это немного подробнее для тех, кому интересно.
Разработчики имеют тенденцию быть действительно хорошими в написании кода и действительно ужасными в дизайне. Этот вопрос, хотя и звучит как вопрос о коде, и спрашивающий наверняка чувствует, что это вопрос о коде, на самом деле является вопросом дизайна.
Вопрос действительно заключается в том, должен ли я заблокировать ориентацию экрана в моем приложении? Аскер выбрал дизайн интерфейса, чтобы он функционировал и выглядел хорошо только в портретном режиме. Я подозреваю, что это сэкономило время на разработку или потому, что рабочий процесс приложения особенно благоприятен для портретного макета (обычного для мобильных игр). Но эти причины игнорируют все действительно важные факторы, которые мотивируют правильный дизайн.
Взаимодействие с клиентами - вы хотите, чтобы ваши клиенты чувствовали себя втянутыми в ваше приложение, а не выталкиваемыми из него. Приложение должно плавно переходить от того, чем занимался ваш клиент до открытия приложения. (По этой причине большинство платформ имеют согласованные принципы проектирования, поэтому большинство приложений выглядят более или менее одинаково, хотя и не обязаны).
Отзывы клиентов - вы хотите, чтобы ваши клиенты положительно реагировали на ваше приложение. Они должны наслаждаться этим. Даже если это приложение для начисления заработной платы за работу, им должно быть приятно открыть его и посмотреть на него. Приложение должно сэкономить время ваших клиентов и уменьшить разочарование по поводу альтернатив. (Приложения, которые раздражают пользователей, вызывают недовольство вашим приложением, которое перерастает в недовольство вашим брендом.)
Конверсия клиентов - вы хотите, чтобы ваши клиенты могли быстро и легко переходить от просмотра к взаимодействию. Это конечная цель любого приложения - преобразовать показы в доход. (Приложения, которые не приносят доход, являются пустой тратой вашего времени на создание с точки зрения бизнеса.)
Плохо разработанный пользовательский интерфейс снижает вовлеченность клиентов и реагирование, что в конечном итоге приводит к снижению доходов. В мире, ориентированном на мобильные устройства (и особенно на тему режимов портретной и альбомной ориентации), это объясняет, почему адаптивный веб-дизайн так важен. Walmart Canada представила адаптивный дизайн на своем сайте в ноябре 2013 года и увидела 20% увеличение конверсии клиентов. O'Neill Clothing внедрила адаптивный веб-дизайн, и выручка от клиентов, использующих устройства iOS, увеличилась на 101,25% , а для клиентов, использующих устройства Android , - на 591,42% .
Существует также тенденция разработчиков сосредоточиться на реализации конкретного решения (например, блокировка ориентации экрана), и большинство разработчиков на этом сайте будут очень рады помочь реализовать это решение, не задаваясь вопросом, является ли это даже лучшим Решение проблемы.
Блокировка ориентации экрана - это дизайн пользовательского интерфейса, эквивалентный реализации цикла do-while. Вы действительно уверены, что хотите сделать это таким образом, или есть лучшая альтернатива?
Не заставляйте ваше приложение в режиме одного дисплея. Вложите дополнительное время и усилия, чтобы сделать его отзывчивым.