Публикации - Mobile Operating Systems

Android - Toast pop-up messages

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

Пользователь не может взаимодействовать и никак влиять на сообщение, его участь - просто дождаться пока Toast сообщение плавно исчезнет. Во время, когда Toast сообщение отображается на экране, пользователю доступны все действия в программе, сообщение не влияет ни на какую функцию приложения. Представьте, что вы нажимаете на на кнопку плей в проигрывателе, а тут всплывает окошко с надписью: "Файлы отсутствуют" и само через пару секунд исчезает. Это и есть Toast сообщение.

Отредактируем файл шаблона activity_main.xml. Добавим туда несколько кнопок, каждая из которых будет вызывать Toast сообщение определенного типа:

Прослушка события onClick элемента Button. Листинг 1.

xml version="1.0" encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/t1"
android:text="Обычный Toast"
android:onClick="Toast"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/t2"
android:text="Toast с координатами положения"
android:onClick="Toast"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/t3"
android:text="Toast с изображением"
android:onClick="Toast"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/t4"
android:text="Toast с собственным интерфейсом"
android:onClick="Toast"/>

LinearLayout>

Мы создали 4 кнопки, которые будут вызывать 4 разных вида Toast сообщения. Для всех кнопок мы задали один метод нажатия, который нужно описать.

Ставим курсор на строку:

android:onClick="Toast"

Жмем Alt+Enter и выбираем первую строку (создаем таким образом в файле MainActivity.java метод описания нажатия наших клавиш):

Переходим к созданию соответствующих Toast сообщений в файле MainActivity.java:

Создание toast-сообщений. Листинг 1.

import android.widget.Toast;

public void Toast(View view) {
switch (view.getId()){
case R.id.t1:
//Создаем обычное Toast сообщение с текстом:
Toast.makeText(MainActivity.this,"Обычное Toast сообщение",Toast.LENGTH_SHORT).show();
break;

case R.id.t2:
//Создаем Toast сообщение и задаем положение его показа на экране:
Toast toast= Toast.makeText(MainActivity.this,"Toast с координатами положения",Toast.LENGTH_LONG);
//Выставляем положение сообщения вверху экрана:
toast.setGravity(Gravity.TOP,0,0);
toast.show();
break;

case R.id.t3:
//Создаем Toast сообщение с использованием изображения:
Toast toast1=Toast.makeText(MainActivity.this,"Toast с изображением",Toast.LENGTH_LONG);
toast1.setGravity(Gravity.CENTER,0,0);
//Создаем разметку для заполнения ее изображением:
LinearLayout linearLayout=(LinearLayout)toast1.getView();
//Создаем в теле Toast объект типа ImageView:
ImageView imageView=new ImageView(MainActivity.this);
//Привязываем к нему изображение:
imageView.setImageResource(R.drawable.ic_launcher);
//Добавляем изображение к разметке для его отображения и запускаем Toast сообщение:
linearLayout.addView(imageView);
toast1.show();
break;
}
}

Мы использовали прием описания нажатия клавиш через команду switch, чтобы не создавать для каждой кнопки отдельного обработчика нажатия.

Как видите, Toast сообщение создается классом Toast прямо внутри метода обработки нажатия клавиш. Для первой кнопки мы создали простое Toast сообщение и с помощью метода makeText настроили ему текст для отображения, указали, что оно должно отображаться в нашем MainActivity и настроили длительность высвечивания сообщения LENGTH_SHORT (LENGTH_SHORT = 2 секунды, LENGTH_LONG= 3,5 секунды, это системные константы).

В случае второй кнопки "Toast с координатами положения" мы задали Toast несколько иначе и с помощью команды setGravity выставили положение (TOP - вверху экрана,0 - изменение координаты по X,0 - изменение координаты по Y), где будет высвечиваться сообщение. Обратите внимание, что здесь уже длительность отображения LENGTH_LONG.

Для третей кнопки задача еще более усложнена - подключаем в Toast сообщение отображение картинки. В теле класса Toast мы создали два объекта LinearLayout и ImageView, к объекту ImageView привязали картинку с папки drawable, и настроили ее отображение в LinearLayout.

Ну и осталось создать еще один намеченный нами в начале тип Toast сообщения - с собственным интерфейсом. Для этого сначала нужно создать файл разметки layout, в котором мы и зададим внешний вид сообщения. В папке layout создаем файл toast.xml и переходим к его редактированию:

Toast.xml. Листинг 1.

xml version="1.0" encoding="utf-8"?>
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="#ffffffff"
android:orientation="vertical"
android:id="@+id/llToast">

android:layout_height="wrap_content"
android:textColor="#ffffffff"
android:layout_width="fill_parent"
android:gravity="center"
android:background="#bb000000"
android:text="Toast сообщение"
android:id="@+id/TV1" />

android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/llToastContent"
android:layout_width="wrap_content"
android:background="#44000000">

android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:src="@drawable/ic_launcher"
android:id="@+id/tvImageToast"
android:layout_marginBottom="4dip" />

android:layout_height="wrap_content"
android:paddingRight="10dip"
android:paddingLeft="10dip"
android:layout_width="wrap_content"
android:gravity="center"
android:textColor="#ff000000"
android:id="@+id/TV2"
android:text="Toast с собственным интерфейсом"/>

LinearLayout>
LinearLayout>

Теперь вернемся в файл MainActivity.java и добавить к методу обработки щелчка Toast код для последней кнопки:

Использование шаблона во всплывающем сообщении. Листинг 1.

case R.id.t4:
//Создаем элемент View заполняем его вид с созданного файла toast.xml:
View layout=getLayoutInflater().inflate(R.layout.toast,null);
//Создаем Toast сообщение:
Toast toast3=new Toast(MainActivity.this);
//Настраиваем положение показа сообщения:
toast3.setGravity(Gravity.CENTER,0,0);
//Настраиваем продолжительность высвечивания:
toast3.setDuration(Toast.LENGTH_LONG);
//Настраиваем ему вид с созданного View layout
// (который в свою очередь уже настроен на вид с toast.xml):

toast3.setView(layout);
//Запускаем сообщение:
toast3.show();
break;

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться