Подключенные дисплеи расширяют возможности оконного рабочего стола до стандартных телефонов, предоставляя пользователям доступ к большим экранам с их мобильных устройств. Эта возможность открывает новые возможности для взаимодействия приложений и производительности пользователей.
Все уникальные возможности окон рабочего стола применимы к подключенным дисплеям. При подключении телефона к дисплею состояние телефона остается неизменным, а на подключенном дисплее запускается пустой сеанс рабочего стола. Устройство и дисплей действуют как две отдельные системы с приложениями, специфичными для каждого дисплея.
Если вы подключаете устройство с поддержкой окон рабочего стола, например планшет, к внешнему монитору, сеанс рабочего стола распространяется на оба дисплея. Затем два дисплея функционируют как одна непрерывная система. Такая настройка позволяет окнам, содержимому и курсору свободно перемещаться между двумя дисплеями.
Эффективная поддержка подключенных дисплеев требует внимания к нескольким аспектам дизайна и реализации вашего приложения. Следующие рекомендации гарантируют плавный и продуктивный пользовательский опыт.
Управление динамическими изменениями отображения
Многие приложения создаются с предположением, что объект Display
и его характеристики не изменятся в течение жизненного цикла приложения. Однако, когда пользователь подключает или отключает внешний монитор или даже перемещает окно приложения между дисплеями, базовый объект Display
, связанный с контекстом или окном вашего приложения, может измениться. Свойства дисплея, такие как размер, разрешение, частота обновления, поддержка HDR и плотность, могут быть разными. Например, если вы жестко закодируете значения на основе экрана телефона, ваши макеты, скорее всего, сломаются на внешнем дисплее.
Внешние дисплеи также могут иметь совершенно разную плотность пикселей. Вам нужно убедиться, что ваше приложение правильно реагирует на изменения плотности . Это подразумевает использование пикселей, не зависящих от плотности (dp), для макетов, предоставление ресурсов, зависящих от плотности, и обеспечение правильного масштабирования вашего пользовательского интерфейса.
Используйте правильный контекст
Использование правильного контекста имеет решающее значение в многодисплейных средах. При доступе к ресурсам контекст активности (который отображается) отличается от контекста приложения (который не отображается).
Контекст активности содержит информацию об отображении и всегда настраивается для области отображения, в которой отображается активность. Это позволяет вам получить правильную информацию о плотности отображения или метриках окна вашего приложения. Всегда используйте контекст активности (или другой контекст на основе пользовательского интерфейса) для получения информации о текущем окне или отображении. Это также влияет на некоторые системные API, которые используют информацию из контекста.
Получить информацию об отображении
Вы можете использовать класс Display
для получения информации о конкретном дисплее, например, его размере или флагах, указывающих, является ли дисплей безопасным. Чтобы получить доступные дисплеи, используйте системную службу DisplayManager
:
val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
val displays = displayManager.getDisplays()
Управление запуском и конфигурацией деятельности
С подключенными дисплеями приложения могут указывать, на каком дисплее должно работать приложение при запуске или создании другой активности. Это поведение зависит от режима запуска активности, определенного в файле манифеста, а также от флагов намерений и опций, установленных сущностью, запускающей активность.
Когда действие перемещается на вторичный дисплей, ваше приложение может столкнуться с обновлением контекста, изменением размера окна, а также изменением конфигурации и ресурсов. Если действие обрабатывает изменение конфигурации, оно уведомляется в onConfigurationChanged()
. В противном случае действие перезапускается.
Если выбранный режим запуска для действия допускает несколько экземпляров, запуск на вторичном экране может создать новый экземпляр действия. Оба действия возобновляются одновременно, что может быть полезно для определенных сценариев многозадачности.
Вы можете запустить действие на определенном дисплее с помощью ActivityOptions
:
val options = ActivityOptions.makeBasic()
options.setLaunchDisplayId(targetDisplay.displayId)
startActivity(intent, options.toBundle())
Избегайте списков разрешенных устройств
Приложения иногда ограничивают большой экранный пользовательский интерфейс и функции для выбора устройств через список разрешенных или путем проверки встроенного размера дисплея. С подключенными дисплеями этот подход больше не эффективен, поскольку практически любое новое устройство может быть подключено к большому экрану. Разрабатывайте свое приложение так, чтобы оно было отзывчивым и адаптируемым к различным размерам и плотности экрана.
Поддержка внешних периферийных устройств
Когда пользователи подключаются к внешнему дисплею, они часто создают среду, более похожую на настольный компьютер. Это часто подразумевает использование внешних клавиатур, мышей, трекпадов, веб-камер, микрофонов и динамиков. Вам необходимо убедиться, что ваше приложение работает без сбоев с этими периферийными устройствами. Это включает обработку сочетаний клавиш, управление взаимодействием указателя мыши, правильную поддержку внешних камер или микрофонов и соблюдение маршрутизации аудиовыхода. Для получения более подробной информации см. Совместимость ввода на больших экранах .
Повышение производительности труда пользователей
Подключенные дисплеи предоставляют значительную возможность для повышения производительности пользователей . Теперь у вас есть инструменты для создания мобильных приложений, которые могут предложить возможности, сопоставимые с настольными приложениями. Рассмотрите возможность внедрения следующих функций для повышения производительности пользователей :
- Разрешить пользователям открывать несколько экземпляров одного и того же приложения. Это бесценно для таких задач, как сравнение документов, управление различными разговорами или одновременный просмотр нескольких файлов.
- Позвольте пользователям обмениваться полезными данными в вашем приложении и из него с помощью функции перетаскивания .
- Помогите пользователям поддерживать рабочий процесс при изменении конфигурации, внедрив надежную систему управления состоянием .
Следуя этим рекомендациям и используя предоставленные примеры кода, вы сможете создавать приложения, которые легко адаптируются к подключенным дисплеям, предлагая пользователям более насыщенный и продуктивный опыт.