Está en la página 1de 5

Notificaciones en Android (I): Toast

En Android existen varias formas de notificar mensajes al usuario, como por ejemplo los cuadros de dilogo modales o las notificaciones de la bandeja del sistema (o barra de estado). Pero en este artculo nos vamos a centrar en primer lugar en la forma ms sencilla de notificacin: los llamados Toast. Un toast es un mensaje que se muestra en pantalla durante unos segundos al usuario para luego volver a desaparecer automticamente sin requerir ningn tipo de actuacin por su parte, y sin recibir el foco en ningn momento (o dicho de otra forma, sin interferir en las acciones que est realizando el usuario en ese momento). Aunque son personalizables, aparecen por defecto en la parte inferior de la pantalla, sobre un rectngulo gris ligeramente translcido. Por sus propias caractersticas, este tipo de notificaciones son ideales para mostrar mensajes rpidos y sencillos al usuario, pero por el contrario, al no requerir confirmacin por su parte, no deberan utilizarse para hacer notificaciones demasiado importantes. Su utilizacin es muy sencilla, concentrndose toda la funcionalidad en la clase Toast. Esta clase dispone de un mtodo esttico makeText() al que deberemos pasar como parmetro el contexto de la actividad, el texto a mostrar, y la duracin del mensaje, que puede tomar los valores LENGTH_LONG o LENGTH_SHORT, dependiendo del tiempo que queramos que la notificacin aparezca en pantalla. Tras obtener una referencia al objeto Toast a travs de este mtodo, ya slo nos quedara mostrarlo en pantalla mediante el mtodo show(). Vamos a construir una aplicacin de ejemplo para demostrar el funcionamiento de este tipo de notificaciones. Y para empezar vamos a incluir un botn que muestre un toast bsico de la forma que acabamos de describir:

1 2 3 4 5 6 7 8 9 10

btnDefecto.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast toast1 = Toast.makeText(getApplicationContext(), "Toast por defecto", Toast.LENGTH_SHORT); toast1.show(); } });

Si ejecutamos esta sencilla aplicacin en el emulador y pulsamos el botn que acabamos de aadir veremos como en la parte inferior de la pantalla aparece el mensaje Toast por defecto, que tras varios segundos desaparecer automticamente.

Como hemos comentado, ste es el comportamiento por defecto de las notificaciones toast, sin embargo tambin podemos personalizarlo un poco cambiando su posicin en la pantalla. Para esto utilizaremos el mtodo setGravity(), al que podremos indicar en qu zona deseamos que aparezca la notificacin. La zona deberemos indicarla con alguna de las constantes definidas en la clase Gravity: CENTER, LEFT, BOTTOM, o con alguna combinacin de stas. Para nuestro ejemplo vamos a colocar la notificacin en la zona central izquierda de la pantalla. Para ello, aadamos un segundo botn a la aplicacin de ejemplo que muestre un toast con estas caractersticas:

1 2 3 4 5 6 7 8 9 10

btnGravity.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast toast2 = Toast.makeText(getApplicationContext(), "Toast con gravity", Toast.LENGTH_SHORT); toast2.setGravity(Gravity.CENTER|Gravity.LEFT,0,0); toast2.show(); } });

Si volvemos a ejecutar la aplicacin y pulsamos el nuevo botn veremos como el toast aparece en la zona indicada de la pantalla:

Si esto no es suficiente y necesitamos personalizar por completo el aspecto de la notificacin, Android nos ofrece la posibilidad de definir un layout XML propio para toast, donde podremos incluir todos los elementos necesarios para adaptar la notificacin a nuestras necesidades. para nuestro ejemplo vamos a definir un layout sencillo, con una imagen y una etiqueta de texto sobre un rectngulo gris:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lytLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:background="#555555" android:padding="5dip" > <ImageView android:id="@+id/imgIcono" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/marcador" /> <TextView android:id="@+id/txtMensaje" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textColor="#FFFFFF" android:paddingLeft="10dip" />

19 20 21 22 23

</LinearLayout>

Guardaremos este layout con el nombre toast_layout.xml, y como siempre lo colocaremos en la carpeta res\layout de nuestro proyecto. Para asignar este layout a nuestro toast tendremos qeu actuar de una forma algo diferente a las anteriores. En primer lugar deberemos inflar el layout mediante un objeto LayoutInflater, como ya vimos en varias ocasiones al tratar los artculos de interfaz grfica. Una vez construido el layout modificaremos los valores de los distintos controles para mostrar la informacin que queramos. En nuestro caso, tan slo modificaremos el mensaje de la etiqueta de texto, ya que la imagen ya la asignamos de forma esttica en el layout XML mediante el atributo android:src. Tras esto, slo nos quedar establecer la duracin de la notificacin con setDuration() y asignar el layout personalizado al toast mediante el mtodo setView(). Veamos cmo quedara todo el cdigo incluido en un tercer botn de ejemplo:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

btnLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast toast3 = new Toast(getApplicationContext()); LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.lytLayout)); TextView txtMsg = (TextView)layout.findViewById(R.id.txtMensaje); txtMsg.setText("Toast Personalizado"); toast3.setDuration(Toast.LENGTH_SHORT); toast3.setView(layout); toast3.show(); } });

Si ejecutamos ahora la aplicacin de ejemplo y pulsamos el nuevo botn, veremos como nuestro toast aparece con la estructura definida en nuestro layout personalizado.

Como podis comprobar, mostrar notificaciones de tipo Toast en nuestras aplicaciones Android es algo de lo ms sencillo, y a veces resultan un elemento de lo ms interesante para avisar al usuario de determinados eventos.

También podría gustarte