Android 11 Обновление тостов

Android 11 (R) это следующее поколение ОС Android, которое выйдет в 2020 году. В начале апреля Google опубликовал Android 11 Preview 2.1 для ознакомления разработчикам. Там есть множество изменений и одно из них зацепило моё внимание – новое поведение тостов (Toast) и ограничения по кастомизации.

В Android 11 (R), Google вносит следующие изменения в Toast (и потом о каждом подробнее):

1. Отображение кастомизированх тостов для фоновых приложений запрещено

2. Текстовые тосты больше не могут быть изменены

3. setView() — помечена как Deprecated

4. Новенький колбек для тостов

Введение в тосты

Тосты (Toast) – простой виджет, отображаемый поверх приложений. Обычно его используют для отображения простой информации пользователю, вроде отсутствия интернета. Элегантная плавная анимация появления и исчезновения сопутствует отображению тостов.

Существует два различных вида тостов. Один — «простой» тост, который может быть создан посредством прямого вызова конструктора, а второй, «текстовый», может быть создан при помощи статического метода:

Предупреждения для Android R в официальной документации имеют отношение только к текстовым тостам. Прежде чем продолжать, убедитесь, что чётко их различаете.

Изменения в документации для Android R, которые затрагивают текстовые тосты. Указано, что эти методы не будут выполнены если вызваны для таковых.

Изменения в Android 11 (API 30)

1. Фоновые кастомные посты запрещены

Обновленный статус для разных типов постов в разных типах приложений

Кастомный (модифицированный) тост НЕ МОЖЕТ быть отображён когда приложение работает в фоне. Вместо него вы увидите сообщение: «Фоновый кастомный тост заблокирован для пакета [имя пакета] Смотрите g.co/dev/toast.».

Image for post
Наглядная демонстрация описанного

В то же время обычный текстовый тост будет работать как и раньше:

Image for post
То же, но с текстовым тостом

2. Текстовые тосты больше нельзя изменять

Image for post
Смещённый тост

До Android R оба вида тостов могли быть отредактированы (отступы, положение на экране). Но, начиная с новой версии системы, текстовые тосты больше могут изменять эти параметры. Эти функции для них будут нерабочими, т.е. их можно вызвать, но ничего не произойдёт.

Image for post
Указано, что функция теперь не будет работать для текстовых тостов. Ссылка

При этом стоит отметить, что обычные тосты (созданы Toast(context: Context)) всё ещё могут быть отредактированы этими функциями.

Image for post
То же, но с кастомный постом в новом Android

3. Deprecated (устаревшая) функция — setView()

Image for post
В документации указано, что метод был помечен устаревшим

Отметим, что функцию всё так же можно использовать даже в Android 11. Но Deprecreated указывает, что функция будет удалена в будущих версиях системы. Разработчикам рекомендуют избегать подобных функций.

4. Новенький колбек — Toast.Callback

Новый колбек сообщает, когда тост был отображён, а когда скрыт. Добавить его тосту можно очень легко:

Summary

  1. Google пометил setView устаревшей, что подразумевает отсутствие в необходимости модифицировать тосты в будущем.
  2. Тосты можно разделить на два типа – «текстовые» и «простые»
  3. В Android R, модифицированные тосты не могут быть отображены, когда приложение находиться в фоне, а вместо этого будет отображён тост-предупреждение. Эти ограничения не действуют на текстовые тосты.
  4. Функции положения на экране и отступов текстового тоста больше ничего не делают.
  5. Новый колбек для тостов, который будет сообщать об отображении и скрытии тоста.

Оставьте комментарий

Прокрутить наверх