Toast in android app

Toast — всплывающие сообщения

Вступление

Что такое тост? Представьте себе картину. За столом собралась большая куча народа и весело отмечает день рождения кота. Стоит шум и гам. Соседи громко разговаривают между собой и не обращают внимания на других. И тут из-за стола поднимается всеми уважаемый человек со стаканом вина и вилочкой стучит по стеклу стакана, чтобы привлечь внимание присутствующих. Шум смолкает и человек произносит тост. Также и в телефоне, когда вы увлечены какой-то задачей, вдруг всплывает сообщение, привлекая ваше внимание. Это и есть Toast. Второй пример — когда вы заряжаете специальный хлеб (тосты) в тостер, то они через определённое время подпрыгивают, сигнализируя о своей готовности. Посмотрим, как это работает в Android.

Теория

Всплывающее уведомление (Toast Notification) является сообщением, которое появляется на поверхности окна приложения, заполняя необходимое ему количество пространства, требуемого для сообщения. При этом текущая деятельность приложения остаётся работоспособной для пользователя. В течение нескольких секунд сообщение плавно закрывается. Всплывающее уведомление также может быть создано службой, работающей в фоновом режиме. Как правило, всплывающее уведомление используется для показа коротких текстовых сообщений.

Практика

Для создания всплывающего уведомления необходимо инициализировать объект Toast при помощи метода Toast.makeText(), а затем вызвать метод show() для отображения сообщения на экране:

Обычно пишут в одну строчку, соединяя вызов методов в цепочку .

У метода makeText() есть три параметра:

  • Контекст приложения
  • Текстовое сообщение
  • Продолжительность времени показа уведомления. Можно использовать только две константы

Константы для указания продолжительности показа сообщения

  • LENGTH_SHORT — (По умолчанию) показывает текстовое уведомление на короткий промежуток времени;
  • LENGTH_LONG — показывает текстовое уведомление в течение длительного периода времени.

Если покопаться в исходниках Android, то можно найти такие строчки:

Как видите, уведомления выводятся на 3 с половиной секунды или на 2 секунды. Других вариантов нет, не пытайтесь использовать другие значения — у вас ничего не получится.

Настройка позиции на экране

По умолчанию стандартное всплывающее уведомление появляется в нижней части экрана. Изменить место появления уведомления можно с помощью метода setGravity(int, int, int). Метод принимает три параметра:

  • стандартная константа для размещения объекта в пределах большего контейнера (например, GRAVITY.CENTER, GRAVITY.TOP и др.);
  • смещение по оси X
  • смещение по оси Y

Например, если вы хотите, чтобы уведомление появилось в центре экрана, то используйте следующий код (до вызова метода show()):

Для вывода в левом верхнем углу.

Если нужно сместить уведомление направо, то просто увеличьте значение второго параметра. Для смещения вниз нужно увеличить значение последнего параметра. Соответственно, для смещения вверх и влево используйте отрицательные значения.

Не забывайте про метод show()

Типичная ошибка начинающих программистов — забывают добавить вызов метода show() для отображения сообщения на экране. К счастью, в студии, если вы пропустите метод show(), то строка будет подсвечена, а при подведении указателя мыши к строке увидите:

Kotlin Java

Пример

Создайте новый проект или используйте любой старый проект из предыдущих занятий. Добавьте на экран активности кнопку и присвойте ей текст Показать Toast. Теперь напишем код:

Читайте также:  Hdr плеер для андроид

Запустите приложение и нажмите кнопку. В центре экрана появится на короткое время текстовое сообщение, которое само исчезнет. Очень похоже на поведение чеширского кота.

Начиная с Android 4.4, внешний вид всплывающего сообщения изменился, раньше был прямоугольник без закруглений.

Для закрепления материала напишем ещё один пример. Удалим предыдущий код для щелчка кнопки и напишем такой код:

Я подумал, что вы можете не заметить сообщение, которое показывается слишком мало времени. Поэтому на этот раз я использовал константу LENGTH_LONG, чтобы вы успели обратить внимание на сообщение и покормить наконец несчастного голодного кота. Помимо этого, я поместил текст сообщения в XML-ресурсы, как это рекомендуется всегда делать. Кроме того, сообщение будет выводиться в верхней части экрана.

Добавляем картинку

Как правило, для Toast используются короткие текстовые сообщения. При необходимости вы можете добавить к сообщению и картинку. Используя метод setView(), принадлежащий объекту Toast, вы можете задать любое представление (включая разметку) для отображения.

Начнем с приготовлений. Подготовьте картинку и разместите её в папке res/drawable, как мы делали в уроке с «Hello Kitty». Картинка будет доступна приложению как ресурс через название файла без расширения. Например, я добавил в папку файл с изображением кота hungrycat.jpg и могу получить к нему доступ через выражение R.drawable.hungrycat. Чтобы изображение появилось в стандартном Toast-сообщении, нам потребуется программно создать объект класса ImageView и задать для него изображение из ресурсов с помощью метода setImageResource. Сам по себе стандартный внешний вид Toast состоит из контейнера LinearLayout, в который нужно добавить созданный объект ImageView. Можно задать также позицию, в которую следует вывести изображение. Если указать значение 0, то изображение будет показано выше текста. Код для создания Toast с изображением выглядит следующим образом:

Вообще, получив доступ к контейнеру, вы можете делать с ним что угодно. Например, сделать его прозрачным. Смотрится интересно.

Создание собственных всплывающих уведомлений

В предыдущем примере мы получили доступ к контейнеру через метод getView(). Можно пойти от обратного — подготовить свой контейнер и внедрить его в объект Toast через метод setView().

Создадим собственный дизайн разметки для сообщения.

Вам нужно создать разметку в файле res/layout/custom_toast.xml.

Определите два дочерних элемента ImageView и TextView:

Для получения разметки из ХМL-файла и работы с ней в программе используется класс LayoutInflater и его метод getLayoutInflater(), которые возвращает объект LayoutInflater. Затем вызовом метода inflate() получают корневой объект View этой разметки. Например, для файла разметки уведомления с именем custom_toast.xml и его корневого элемента c идентификатором android:id=»@+id/custom_toast_container» код будет таким:

Параметры, передаваемые в метод inflate():

  • идентификатор ресурса макета (custom_toast.xml);
  • идентификатор ресурса корневого элемента (custom_toast_container).

После получения корневого элемента из него можно получить все дочерние элементы методом findViewByid() и определить информационное наполнение для этих элементов.

Затем создаётся объект Toast и устанавливаются нужные свойства, например, Gravity и продолжительность времени показа уведомления.

После этого вызывается свойство view() (Kotlin) или метод setView() (Java), которому передаётся разметка уведомления, и метод show(), чтобы отобразить уведомление с собственной разметкой.

Запустите проект на выполнение. При нажатии кнопки вызова должно появиться на несколько секунд окно уведомления с текстовым сообщением и значком.

Ради интереса можете посмотреть, как выглядит разметка в исходных кода Android.

Toast.Callback

В Android 11 R (API 30) добавили возможность отслеживания момента, когда сообщение появляется и скрывается при помощи Toast.Callback.

Ещё раз напомню, что метод setView() в Android 11 признан устаревшим. А также вообще рекомендуют не использовать собственные виды всплывающих сообщений, а ограничиться простыми текстовыми сообщениями. Иначе можно нарваться на системные ограничения.

Читайте также:  Android drift max pro много денег

Использование уведомлений Toast в рабочих потоках

Как элемент графического интерфейса Toast должен быть вызван в потоке GUI, иначе существует риск выброса межпотокового исключения. В листинге объект Handler используется для гарантии того, что уведомление Toast было вызвано в потоке GUI.

Дополнительные сведения

Напоследок хочу предупредить об одной потенциальной проблеме. При вызове сообщения нужно указывать контекст в первом параметре метода makeText(). В интернете и, возможно и у меня на сайте будет попадаться пример makeText(MainActivity.this, . ). Ошибки в этом нет, так как класс Activity является потомком Context и в большинстве случаев пример будет работать. Но иногда я получаю письма от пользователей, которые жалуются на непонятное поведение сообщения, когда текст не выравнивается, обрезается и т.д. Это связано с тем, что активность может использовать определённую тему или стиль, которые вызывают такой побочный эффект. Поэтому я рекомендую вам использовать метод getApplicationContext().

Второй момент — фрагменты, которые будете изучать позже, не являются потомками контекста. Если вы захотите вызвать всплывающее сообщение в фрагменте, то проблема может поставить вас в тупик. Вам нужно добавить новую переменную класса Activity через метод getActivity():

Такое же может случиться при вызове всплывающих сообщений из диалоговых окон, которые тоже не относятся к классу Context. Вместо getApplicationContext() также можно вызывать метод getBaseContext().

Заключение

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

Дополнительные материалы

Пример частично цветного текста в Toast через Spannable

Источник

Toast в Android Studio: пишем приложение с сообщениями

Рассмотрим, как применяется Toast в Android Studio, написав простое приложение с двумя кнопками, выводящее на экран всплывающие сообщения различной длительности.

Создание проекта

В Android Studio создадим новый проект, назовем его «Мой тост»- My Toast. Нажмем Next, далее Next, Empty Activity, сократим layout name до main, нажмем finish. Система подготовит файлы.

Макет приложения

Далее в режиме дизайна уберем надпись и в категории layout добавим Relative Layout(условное позиционирование). Так же с вкладки виджеты добавим несколько кнопок, расположим их горизонтально в один ряд, перейдем в текстовое отображение файла, переименуем button в button1, поправим кнопки, так как мы переименовали кнопку, одна из них «съехала».

Перейдем в файл strings.xml, добавим несколько строковых(string) значений: первое значение(переменная) btnShort, второе btnLong, и соответственно сами значения у нас будут SHORT — короткий и LONG — длинный.

Сохранимся и закроем strings.xml. Далее текст кнопки первой присвоим из нашей строковой переменной, как видите наши кнопки поменяли свои названия.

Код в MainActivity

Перейдем в MainActivity, найдем кнопку первую, присвоим название переменной btnShort тип Button через конструкцию findViewById(R.id.button1). Проделаем то же самое для второй кнопки.

Обработчик нажатия на кнопки

Далее напишем обработчик нажатия для первой кнопки btnShort, пишем setOnClickListener( new OnClickListener). Наша функция будет типа public void, onClick(View v). Напишем: Toast.makeText(getBaseContext(),) напишем в скобочках наш текст, который будет выводиться при нажатии на эту кнопку «Test Toast Short». Длительность отображения тоста на экране определяется константой LENGTH_SHORT с функцией show(). Напишем обработчик для второй кнопки по такому же принципу, btnLong, setOnClickListener( new OnClickListener). Так же public void, onClick(View v) Toast.makeText(getBaseContext(),»Test Text Long», Toast.LENGTH_LONG)).show(). С кодом мы закончили.

Запуск в эмуляторе

Запустим наше приложение в эмуляторе, при нажатии на кнопку SHORT всплывает сообщение «Test Toast Short»,

соответственно при нажатии на кнопку LONG появляется сообщение «Test Toast Long», и время отображения более длительное.

Читайте также:  Мир дикого запада андроиды

Полный текст main.xml

Полный текст MainActivity.java

В этом видео показано как написать приложение с сообщениями Toast для android:

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

Источник

Android | What is Toast and How to use it with Examples

This article aims to tell What is Toast and How to use it to display messages in an android app.

What is Toast in Android?

A Toast is a feedback message. It takes a very little space for displaying while overall activity is interactive and visible to the user. It disappears after a few seconds. It disappears automatically. If user wants permanent visible message, Notification can be used.

Another type of Toast is custom Toast, in which images can be used instead of a simple message.

Toast class: Toast class provides a simple popup message that is displayed on the current activity UI screen (e.g. Main Activity).

Constants of Toast class

Constants Description
public static final int LENGTH_LONG displays for a long time
public static final int LENGTH_SHORT displays for a short time


Methods of Toast class

Methods Description
public static Toast makeText(Context context, CharSequence text, int duration) makes the toast message consisted of text and time duration
public void show() displays a toast message
public void setMargin (float horizontalMargin, float verticalMargin) changes the horizontal and vertical differences

How to create an Android App to show a Toast message (with Example)

In this example “This a simple toast message” is a Toast message which is displayed by clicking on ‘CLICK’ button. Every time when you click your toast message appears.

Steps to create an Android Application with Toast Message:

  • Step 1: Create an XML file and a Java File. Please refer the pre-requisites to learn more about this step.
  • Step 2: Open “activity_main.xml” file and add a Button to show Toast message in a Constraint Layout.

Also, Assign ID to button component as shown in the image and the code below. The assigned ID to the button helps to identify and to use in Java files.

Here the given ID is Button01

This will make the UI of the Application.

Step 3: Now, after the UI, this step will create the Backend of the App. For this, Open “MainActivity.java” file and instantiate the component (Button) created in the XML file using findViewById() method. This method binds the created object to the UI Components with the help of the assigned ID.
General Syntax:

ComponentType object = (ComponentType)findViewById(R.id.IdOfTheComponent);

Syntax for used component (Click Button):

Button btn = (Button)findViewById(R.id.Button01);

btn.setOnClickListener(new View.OnClickListener() <>);

Parameters: This method accepts three parameters:

  • context: The first parameter is a Context object which is obtained by calling getApplicationContext().
  • text: The second parameter is your text message to be displayed.
  • duration: The last parameter is the time duration for the message.

Therefore the code to make a Toast message is:

Display the created Toast Message using the show() method of the Toast class.

The code to show the Toast message:

  • Step 5: Now Run the app and operate as follows:
    • When the app is opened, it displays a “Click” button.
    • Click the Click button.
    • Then “This a toast message” will be displayed on the screen as a Toast Message.
  • Complete Code to display a simple Toast Message:

    Источник

    Оцените статью