Учимся использовать Toast - сообщения
Главная » Учимся использовать Toast - сообщения

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

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

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <Button
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/t1"
 android:text="Обычный Toast"
 android:onClick="Toast"/>
 <Button
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/t2"
 android:text="Toast с координатами положения"
 android:onClick="Toast"/>
 <Button
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/t3"
 android:text="Toast с изображением"
 android:onClick="Toast"/>
 <Button
 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:

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 и переходим к его редактированию:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:background="#ffffffff"
 android:orientation="vertical"
 android:id="@+id/llToast">

 <TextView
 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" />

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

 <ImageView
 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" />

 <TextView
 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 код для последней кнопки:

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;

Полный код файла MainActivity.java:

import android.app.Activity;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

}

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;

 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;
 }
 }
}

Все готово! Мы научились делать 4 разновидности Toast сообщений для своего приложения (последний особо прикольный:)). Это не предел знаний по теме, но, согласитесь, довольно не мало и полезно.

Вид работающего приложения (весь экран не буду постить, потому, что в виртуальном планшете здАрАвенный экран):

Категория: Уроки программирования | Просмотров: 1271 | Добавил: Oleg | Теги: Android, всплывающее уведомление, сообщение, Toast | Рейтинг: 5.0/3
Всего комментариев: 1
avatar
1 Анонимно • 22:02, 08.12.2015
Спасибо, интересный урок!
avatar