jueves, 17 de mayo de 2012

Notificaciones toast.

¿Que son los Toast?

Las notificaciones Toast en Android, son mensajes que aparecen en nuestra pantalla del dispositivo, por lo que solo se llena el espacio requerido para este mensaje y la actividad actual del usuario permanece visible e interactivo, por lo que la notificación automáticamente se desvanece.

Una notificación toast, es por ejemplo cuando utilizamos la aplicación integrada de alarma, en donde la alarma está activada, se muestra una notificación para que saber que la alarma se creó.


Una notifiación toast se puede crear a partir de una actividad o un servicio en Android, podemos al igual cambiar tamaño y modificarla a nuestra manera, por lo que en esta entrada, explicaré como poder hacer una Toast customizada por nosotros para el uso de la aplicación Cantamela!.

Toast básica.

Para inciar en la realización de una toast básica, debemos de utilizar el método makeText, en donde como parámetros le pondremos, el contexto de la aplicación, el texto a representar y la duración que quieras que se muestra, para al final utilizar show(), para mostrarla, como se ve en el siguiente código.

Context contexto = getApplicationContext();
CharSequence texto = "Soy una notificacion toast :D";
int duracion = Toast.LENGTH_LONG;

Toast toast = Toast.makeText(contexto, texto, duracion);
toast.show();

En donde tenemos este resultado:



Toast propia.

Si necesitamos realizar una toast, en donde no solamente necesitamos un texto, podemos hacer una toast hecha por nosotros en donde primeramente necesitamos hacer un xml, con nuestras preferencias que deseamos que tenga esta notificación, en mi caso, hice este tipo de xml, grabado como msj.xml.


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/notificacion"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="10dp"
              android:background="#3D2423"
              >
    <ImageView android:id="@+id/imagen"
               android:layout_width="wrap_content"
               android:layout_height="fill_parent"
               android:layout_marginRight="50dp"
               android:layout_marginLeft="50dp"
               />
    <TextView android:id="@+id/texto"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent"
              android:textColor="#D6C274"
              android:textSize="45sp"
              />
</LinearLayout>


 Ahora, por el lado de java vamos a hacer las siguientes llamadas a métodos para construir el toast, hay que fijarnos que el id es "notifiacion", y que donde posicionará el texto es el id "texto", al igual que el id "imagen", y "audifonos1" es la imagen que estoy utilizando de ejemplo.


Context contexto = getApplicationContext();
LayoutInflater inflater;
inflater = (LayoutInflater)contexto.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View notif = inflater.inflate(R.layout.msj,(ViewGroup) findViewById(R.id.notificacion));
ImageView imagen = (ImageView) notif.findViewById(R.id.imagen);
imagen.setImageResource(R.drawable.audifonos1);
TextView texto = (TextView) notif.findViewById(R.id.texto);
texto.setText(mensaje);

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(notif);
toast.show();


Tenemos este resultado:



1 comentario: