Widgets – Capítulo 8 – Curso Android

0

Las dos últimas semanas de nuestro curso Android hemos explicado como el programador puede hacer que las aplicaciones capturen los eventos que genera el sistema, u otras aplicaciones, así como la manera en que deben generarse los eventos para que puedan ser capturados por otras aplicaciones, lo que se apartaba un poco del tema principal del curso pero que considerábamos interesante para entender el funcionamiento de Android.

Nos disponemos ahora a continuar desarrollando nuestro explorador de archivos, al que en este capítulo proveeremos de un widget que permitirá al usuario crear accesos directos a un directorio concreto, lo que nos permitirá no sólo explicaros cómo se crea y dibuja el widget, sino también cómo se visualiza la página de configuración del mismo.

En Android, un widget es un cuadro gráfico que se posiciona en el escritorio, y en algunos casos también en la pantalla de bloqueo, y que permite a las aplicaciones mostrar información, a menudo dinámica, y a los usuarios acceder a funciones específicas de ésta.

Proceso añadido de widget

Para poder diseñar un widget es necesario responder primero a las siguientes preguntas:

  • Qué queremos mostrar en el widget,
  • Se puede configurar la información que aparece en el widget,
  • Cuando se refrescará la información del widget,
  • Cómo interactuará el usuario con el widget, si es que eso es posible,

Además, y como veremos a continuación, será necesario tener en cuenta al iniciar el proceso de actualización que el usuario puede haber añadido más de un widget.

Qué queremos mostrar en el widget

El contenido del widget se define de igual manera que el contenido de una actividad (ventana), es decir, mediante un layout que contendrá los diferentes elementos de éste.

Asimismo, también deberemos definir el widget en el manifiesto de la aplicación, tal como se indica a continuación.

La acción capturada (android.appwidget.action.APPWIDGET_UPDATE) sirve para indicar al sistema que la clase debe recibir los eventos de actualización del widget, tal y como ya indicamos en clases anteriores.

Adicionalmente, deberemos indicar las características básicas del widget, tales como el tamaño, el tiempo tras el cual debe actualizarse el widget y el layout inicial en el archivo res/xml/widget.xml (o el nombre que hayamos indicado en el manifiesto).

Se puede configurar la información que aparece en el widget

En caso que nuestro widget sea configurable, deberemos indicarlo en el archivo res/xml/widget.xml, lo cual forzará la creación de una actividad inicial en la que el usuario introduzca los parámetros de configuración de aquel.

Aunque podemos usar cualquier mecanismo para almacenar los parámetros de configuración del widget, lo más conveniente es utilizar la clase SharedPreferences, cuyo funcionamiento ya conocéis.

Adicionalmente, deberemos tener en cuenta que internamente Android implementa la llamada a la actividad de configuración mediante la ejecución del procedimiento onActivityResult, por lo que si la actividad de configuración acaba con un código de ejecución (resultCode) diferente de Activity.RESULT_OK, la adición del widget se cancelará.

Cuándo se refrescará la información del widget

El widget se refresca cuando se activa el evento android.appwidget.action.APPWIDGET_UPDATE, que deberemos capturar convenientemente en el código que implemente nuestro widget (ver procedimiento onUpdate de la clase Widget en el ejemplo).

Es posible forzar la activación de dicho evento mediante el broadcast correspondiente, tal y como se muestra en el código de ejemplo.

Cómo interactuará el usuario con el widget, si es que eso es posible

Los widgets son objetos dinámicos en el sentido que su contenido puede ser modificado dinámicamente por la aplicación, mediante la captura del evento APPWIDGET_UPDATE enunciado en los párrafos anteriores.

Widgets - Capítulo 8 - Curso Android

No obstante, lo más provable es que nos interese la interacción con el usuario, habitualmente mediante el evento ONCLICK sobre la vista que contiene a nuestro widget, para lo cual deberemos usar el procedimiento setOnClickPendingIntent, que usaremos para que al clicar el widget se genere un broadcast, se active una ventana, etc.

La próxima semana os hablaremos de los servicios, que permiten la ejecución de código en segundo plano, de igual manera que ocurría con los Threads, aunque en esta ocasión se trata de una clase completa y mucho más versátil.

Mientras tanto, os recomendamos que os descarguéis la nueva versión de la aplicación de prueba que estamos desarrollando, en la que encontrareis profusamente documentados los conceptos introducidos en esta sesión.

Como siempre, os invitamos a visitar el Hilo oficial del Curso Android de Foromóviles, donde podéis hacernos llegar vuestras dudas y comentarios.

Dejar respuesta

Please enter your comment!
Please enter your name here