Как создать уведомление о ходе выполнения

уведомление о ходе выполнения в верхней части шторки
Рисунок 1. Уведомление о ходе выполнения в верхней части панели.

В Android 16 появился новый шаблон уведомлений, который помогает пользователям отслеживать запущенные ими процессы от начала до конца. Такие уведомления лучше видны на системных экранах и занимают верхние позиции на панели уведомлений.

Используйте Notification.ProgressStyle, чтобы стилизовать уведомления о ходе выполнения. Основные примеры использования: совместные поездки, доставка и навигация. Внутри этого класса вы можете обозначать состояния и этапы пути пользователя с помощью точек и сегментов.

Релевантные классы

В следующих классах содержатся различные API, которые используются для создания уведомлений ProgressStyle:

Структура и настройка

На изображениях ниже показаны разные части уведомлений ProgressStyle.

Рисунок 2.

A. Заголовок – подтекст

Notification.Builder#setSubText()

B. Заголовок – время

Notification.Builder#setWhen()

C. Название контента

Notification.Builder#setContentTitle()

D. Текст контента

Notification.Builder#setContentText()

E. Индикатор выполнения

Notification.ProgressStyle

F. Кнопка

Notification.Builder#addAction()

Рисунок 3. Приложения могут использовать изображение автомобиля в качестве значка трекера, а также сегменты и точки для обозначения поездки и ее этапов.

Рекомендации

Используйте подходящие API и следуйте рекомендациям, чтобы пользователям было удобно отслеживать прогресс.

  • Заполните нужные поля, чтобы уведомление показывалось в верхней части панели уведомлений.
  • Используйте визуальные элементы, чтобы направлять пользователей. Например, в приложениях для совместных поездок в уведомлении должно быть изображение автомобиля и его цвет, заданный с помощью Notification#setLargeIcon.
  • Используйте краткие и понятные формулировки, чтобы описать путь пользователя. Время прибытия, имя водителя и статус поездки – это важный текст, который должен быть в уведомлении.
  • Добавляйте в уведомления полезные и актуальные действия, которые упрощают путь пользователя. Например, действия "Добавить чаевые" и "Добавить блюдо" полезны до доставки.
  • Используйте сегменты и точки, чтобы обозначить штаты. Например, сегменты могут раскрашивать состояние и продолжительность трафика в поездке. Точки представляют собой состояния для этапов, таких как приготовление еды, доставка и посадка пассажиров.
  • Обновите индикатор прогресса, чтобы он точно отражал фактический прогресс. Например, изменения в загруженности дорог могут отражаться в изменении цвета сегментов и обновлении текста.

В следующем фрагменте кода показано, как можно использовать уведомление ProgressStyle в контексте совместных поездок:

var ps =
    Notification.ProgressStyle()
        .setStyledByProgress(false)
        .setProgress(456)
        .setProgressTrackerIcon(Icon.createWithResource(appContext, R.drawable.ic_car_red))
        .setProgressSegments(
            listOf(
                Notification.ProgressStyle.Segment(41).setColor(Color.BLACK),
                Notification.ProgressStyle.Segment(552).setColor(Color.YELLOW),
                Notification.ProgressStyle.Segment(253).setColor(Color.WHITE),
                Notification.ProgressStyle.Segment(94).setColor(Color.BLUE)
            )
        )
        .setProgressPoints(
            listOf(
                Notification.ProgressStyle.Point(60).setColor(Color.RED),
                Notification.ProgressStyle.Point(560).setColor(Color.GREEN)
            )
        )

Чтобы поэкспериментировать с этими API, воспользуйтесь примером приложения.