Android >> Notificaciones en Android ( Parte 1 – Toasts )

android-toasts

Vamos a ver en este tutorial los distintos mecanismos que nos proporciona Android para mostrar mensaje al usuario. Principalmente, estos mecanismo son tres:

En la primera parte de este tutorial vamos a ver el mecanismo más sencillo: los mensajes Toast. Un toast muestra un mensaje en un pequeño popup, cuyo tamaño no excede el contenido del mensaje y no interrumpe la ejecución de la aplicación. Este tipo de mensjes son muy útiles cuando queremos mostrar cualquier mensaje informativo, donde no se necesita la interacción del usuario, por ejemplo si guardamos los datos de un usuario en la base de datos de nuestra aplicación, podríamos mostrar el mensaje Usuario guardado correctamente en un toast.

  • Construyendo un Toast básico

Vamos a empezar creando un simple toast donde se mostrará un texto. En primer lugar instanciamos un objeto Toast usando el método makeText(). Este método toma tres parámetros, el contexto de la aplicación, el mensaje de texto que queremos mostrar y la duración del toast. A continuación, para mostrar el mensaje tendremos que invocar a continuación el método show():

MainActivity.java

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

Opcionalmente puedes encadenar ambos métodos como ocurre a continuación:

Toast.makeText(context, text, duration).show();

En la variable duration puedes especificar cualquier número entero, pero generalmente se suelen usar uno de las dos constantes de la clase Toast, LENGTH_SHORT y LENGTH_LONG.

android-basic-toast

Pues en este ejemplo ya hemos visto prácticamente todo acerca de los toasts, ya que raramente tendrás que usar algunas de las opciones que vamos a ver a continuación.

  • Posicionando el Toast en la pantalla

Por defecto, el toast se mostrará en la parte inferior de la pantalla y centrado horizontalmente, si queremos modificar la posición deberemos usar el método setGravity(int, int, int), donde el primer parámetro indica la zona donde aparecerá el toast, para ello usaremos alguna constante de la clase Gravity (CENTER, BOTTOM, TOP, LEFT, RIGHT, etc) , el segundo parámetro indica el desplazamiento respecto al eje X y el tercero el desplazamiento sobre el eje Y:

MainActivity.java

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
int offsetX = 50;
int offsetY = 25;
toast.setGravity(Gravity.RIGHT | Gravity.TOP, offsetX, offsetY);
toast.show();

android-positioning-toast

  • Creando un Toast personalizado

Si el mensaje de texto no es suficiente, deberemos de definir un layout personalizado, ya sea en XML o por código en la aplicación, e indicarle al toast la vista a usar a través del método setView(). Vamos a comenzar definiendo un layout con el nombre custom_toast.xml:

custom_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#C8C8C8"
    android:gravity="center"
    android:orientation="horizontal"
    android:padding="10dp" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="8dp"
        android:src="@android:drawable/ic_dialog_info" />

    <TextView
        android:id="@+id/text_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFF" />

</LinearLayout>

Es importante resaltar que se le debe dar un ID al elemento raíz del layout, ya que será necesario como veremos a continuación:

MainActivity.java

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
		(ViewGroup) findViewById(R.id.toast_layout_root));

TextView textToast = (TextView) layout.findViewById(R.id.text_toast);
textToast.setText(text);

Toast toast = new Toast(context);
toast.setDuration(duration);
toast.setView(layout);
toast.show();

En primer lugar, obtenemos el LayoutInflater con el método getLayoutInflater() (o con getSystemService()) que nos permite instanciar los layout definidos en XML en sus correspondientes objetos de la clase View. A continuación inflamos el layout desde el fichero XML usando el método inflate(int, ViewGroup). En el primer parámetro indicamos el nombre del fichero XML del layout en el que hemos definido el contenido del toast y el segundo indica el ID del elemento raíz del layout definido en el XML. Una vez inflado el layout, podemos recuperar cualquier elemento definido en él. En esta ocasión recuperamos el TextView y escribimos en él el texto que queramos. Para finalizar, creamos el toast con el método Toast(Context), indicamos las propiedades que deseamos usar igual que en los ejemplos anteriores y antes de mostrar el toast llamamos al método setView(View) para indicar el layout que queremos mostrar. Ahora simplemente llamamos al método show() para que el toast aparezca en pantalla.

android-custom-toast

Más información | Android Developers

Descargar código | GitHub

Etiquetado , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: