В этой статье мы кратко расскажем о новой функции Bubble, появившейся в Android Q, а также о том, как мы можем реализовать ее в наших собственных приложениях
Несколько недель назад мы увидели анонс бета-версии Android Q. В этой версии Android появилась коллекция интересных изменений, к которым нам нужно подготовить наши приложения. В этом наборе статей я собираюсь углубиться в каждую из них, чтобы мы были полностью готовы к тому, чтобы подготовить наши приложения!
Как указано в примечаниях к выпуску бета-версии 2 Android Q, мы видим введение так называемых bubbles (пузырей). Эти bubbles направлены на улучшение многозадачности, а также на предоставление унифицированным способом приложениям предоставлять такую функцию – хотя некоторые приложения уже имеют эту функцию (например, мессенджер Facebook), эта функция на системном уровне создаст более согласованный опыт для пользователей и позволит разработчикам проще реализовать такую вещь.
В примере приложения, предоставленного Google, вы можете увидеть простое приложение для обмена сообщениями, в котором реализована эта функция. Хотя это и приведенный выше снимок экрана отображают взаимодействия в стиле обмена сообщениями, bubbles можно использовать для предоставления доступа к различным типам контента, которые позволяют улучшить работу многозадачности для ваших пользователей. Например, вы можете показать всплывающий список задач, которые пользователь может быстро возобновить, чтобы пометить что-то.
Функциональность Bubble состоит из нескольких изменений в классах, связанных с Notification. Два основных изменения касаются API уведомлений, и, прежде всего, класс построителя уведомлений имеет новый метод setBubbleMetaData(). Для этого требуется экземпляр нового класса BubbleMetadata, который будет использоваться для отображения нужного содержимого приложения в плавающем окне из выбранного bubble.
Notification.Builder(context, YOUR_NOTIFICATION_CHANNEL)
.setBubbleMetadata(someBubbleMetaData)
Там вы заметите, что мы передаем ссылку на канал уведомлений при создании нашего уведомления. Здесь важно отметить, что класс NotificationChannel теперь имеет метод canBubble() – это позволяет нам проверить, может ли наше приложение использовать пузырьки уведомлений. Причина этого заключается в том, что пользователи могут отключить всплывающие уведомления в разделе системных настроек вашего приложения. NotificationChannel также имеет метод setAllowBubbles(), который мы можем использовать, чтобы установить, поддерживает ли канал bubbles или нет, перед тем, как канал будет передан в диспетчер уведомлений.
Примечание. Существует также метод areBubblesAllowed(), который был добавлен в класс NotificationManager. Этот и последующий метод canBubble () из класса NotificationChannel должны быть проверены перед отображением Bubble.
Теперь, когда у нас есть наш конструктор уведомлений и мы проверили, что мы можем отображать bubbles для нашего приложения, пришло время создать метаданные Bubble. Мы начнем с использования Builder для создания наших BubbleMetaData.
Notification.BubbleMetadata.Builder()
Затем мы можем использовать setAutoExpandBubble(), чтобы объявить, будет ли содержимое пузыря автоматически расширяться при создании, при условии, что данное приложение в настоящее время находится на переднем плане. В рекомендациях говорится, что это должно быть присвоено значение true, только если пользователь запросил показ пузыря, что имеет смысл, так как это может быть неожиданным поведением для пользователя, когда пузырь внезапно открывается из ниоткуда.
Затем мы можем использовать setDeleteIntent(), чтобы назначить намерение, которое следует использовать, когда пользователь удаляет пузырь. С другой стороны, setIntent() может использоваться для назначения намерения, которое будет использоваться при открытии пузыря. Когда это будет сделано, содержание намерения будет отображаться в плавающем окне из пузырька. Когда появится этот пузырь, соответствующее уведомление останется в системной панели. Однако мы можем использовать метод setSuppressInitialNotification() конструктора, чтобы объявить, что уведомление не должно отображаться в системной панели. Этот метод имеет смысл использовать при использовании setAutoExpandBubble() – так как в этом случае пользователь будет запускать пузырь, поэтому уведомление не будет служить какой-либо цели.
Есть также некоторые относящиеся к отображению значения, которые мы можем установить для BubbleMetadata. Прежде всего мы можем использовать setDesiredHeight(), чтобы назначить высоту, которая будет использоваться для контента, отображаемого через свойство setIntent(). Мы также можем использовать setIcon() и setTitle() для настройки внешнего вида отображаемого пузырька.
В этой статье мы кратко рассказали о новой функции Bubble, появившейся в Android Q, а также о том, как мы можем реализовать ее в наших собственных приложениях. Я с нетерпением жду приложений, использующих это, и последовательного опыта, который он принесет на платформу. Будете ли вы использовать bubbles или у вас есть какие-либо вопросы о них? Не стесняйтесь писать в комментариях, если это так!
Перевод источника