Está en la página 1de 18

Widgets en Android

Ing. Edgar Lizrraga Ugarte


Widgets en Android
En esta primera parte vamos a crear un widget
muy bsico, consistente en un simple marco
rectangular negro con un mensaje de texto
predeterminado (Mi Primer Widget). La
sencillez del ejemplo nos permitir centrarnos en sencillez del ejemplo nos permitir centrarnos en
los pasos principales de la construccin de un
widget Android y olvidarnos de otros detalles que
nada tienen que ver con el tema que nos ocupa
(grficos, datos, etc).
Widgets en Android
Widgets en Android
Los pasos principales para la creacin de un widget
Android son los siguientes:
Definicin de su interfaz grfica (layout).
Configuracin XML del widget
(AppWidgetProviderInfo). (AppWidgetProviderInfo).
Implementacin de la funcionalidad del widget
(AppWidgetProvider) , especialmente su evento
de actualizacin.
Declaracin del widget en el Android Manifest de
la aplicacin.
1.- Definicin de su interfaz grfica
(layout)
En esta ocasin, la interfaz del widget estar
compuesta nicamente por un par
de frames (FrameLayout), uno negro exterior y
uno blanco interior algo ms pequeo para
simular el marco, y una etiqueta de texto simular el marco, y una etiqueta de texto
(TextView) que albergar el mensaje a mostrar.
Veamos cmo queda el layout xml, que para
este ejemplo llamaremos miwidget.xml:
1.- Definicin de su interfaz grfica
(layout)
1.- Definicin de su interfaz grfica
(layout)
Cabe destacar aqu que, debido a que el layout
de los widgets de Android est basado en un
tipo especial de componentes
llamados RemoteViews, no es posible utilizar
en su interfaz todos los contenedores y en su interfaz todos los contenedores y
controles que hemos visto en artculos
anteriores sino slo unos pocos bsicos que se
indican a continuacin:
1.- Definicin de su interfaz grfica
(layout)
Contenedores: FrameLayout, LinearLayout,
RelativeLayout y GridLayout (ste ltimo a
partir de Android 4).
Controles: Button, ImageButton, ImageView,
TextView, ProgressBar,Chronometer, AnalogCl TextView, ProgressBar,Chronometer, AnalogCl
ock y ViewFlipper. A partir de Android 3
tambin podemos utilizar ListView, GridView,
StackView y AdapterViewFlipper, aunque su
uso tiene algunas particularidades. En este
artculo no trataremos este ltimo caso, pero si
necesitas informacin puedes empezar por
la documentacin oficial sobre el tema.
2.- Configuracin XML del widget
Como segundo paso del proceso de
construccin vamos a crear un nuevo fichero
XML donde definiremos un conjunto de
propiedades del widget, como por ejemplo su
tamao en pantalla o su frecuencia de tamao en pantalla o su frecuencia de
actualizacin. Este XML se deber crear en la
carpeta \res\xml de nuestro proyecto. En
nuestro caso de ejemplo lo llamaremos
miwidget_wprovider.xml y tendr la
siguiente estructura:
2.- Configuracin XML del widget
2.- Configuracin XML del widget
Para nuestro widget estamos definiendo las
siguientes propiedades:
initialLayout: referencia al layout XML que
hemos creado en el paso anterior.
minWidth: ancho mnimo del widget en pantalla, minWidth: ancho mnimo del widget en pantalla,
en dp (density-independent pixels).
minHeight: alto mnimo del widget en pantalla,
en dp (density-independent pixels).
label: nombre del widget que se mostrar en el
men de seleccin de Android.
updatePeriodMillis: frecuencia de actualizacin
del widget, en milisegundos.
2.- Configuracin XML del widget
Existen varias propiedades ms que se pueden
definir, por ejemplo el icono de vista previa del
widget (android:previewImage, slo para
Android >3.0) o el indicativo de si el widget
ser redimensionable (android:resizeMode, ser redimensionable (android:resizeMode,
slo para Android >3.1) o la actividad de
configuracin del widget (android:configure).
El resto se pueden consultar en
la documentacin oficial de la clase
AppWidgetProviderInfo.
3.- Implementacin de la funcionalidad
del widget (AppWidgetProvider)
Este consiste en implementar la funcionalidad
de nuestro widget en su clase java asociada.
Esta clase deber heredar
de AppWidgetProvider, que a su vez no es ms de AppWidgetProvider, que a su vez no es ms
que una clase auxiliar derivada
de BroadcastReceiver, ya que los widgets de
Android no son ms que un caso particular de
este tipo de componentes.
3.- Implementacin de la funcionalidad
del widget (AppWidgetProvider)
En esta clase deberemos implementar los mensajes
a los que vamos a responder desde nuestro widget,
entre los que destacan:
onEnabled(): lanzado cuando se crea la primera
instancia de un widget. instancia de un widget.
onUpdate(): lanzado periodicamente cada vez que
se debe actualizar un widget, por ejemplo cada vez
que se cumple el periodo de tiempo definido por el
parmetro updatePeriodMillisantes descrito, o
cuando se aade el widget al escritorio.
onDeleted(): lanzado cuando se elimina del
escritorio una instancia de un widget.
onDisabled(): lanzado cuando se elimina del
escritorio la ltima instancia de un widget.
3.- Implementacin de la funcionalidad
del widget (AppWidgetProvider)
En la mayora de los casos, tendremos que
implementar como mnimo el
evento onUpdate(). El resto de mtodos
dependern de la funcionalidad de nuestro dependern de la funcionalidad de nuestro
widget. En nuestro caso particular no nos har
falta ninguno de ellos ya que el widget que
estamos creando no contiene ningn dato
actualizable, por lo que crearemos la clase,
llamada MiWidget, pero dejaremos vaco por el
momento el mtodo onUpdate().
3.- Implementacin de la funcionalidad
del widget (AppWidgetProvider)
4.- Declaracin del widget en el Android
Manifest de la aplicacin.
El ltimo paso del proceso ser declarar el
widget dentro del manifest de nuestra
aplicacin. Para ello, editaremos el
fichero AndroidManifest.xml para incluir la fichero AndroidManifest.xml para incluir la
siguiente declaracin dentro del
elemento<application>:
4.- Declaracin del widget en el Android
Manifest de la aplicacin.
El widget se declarar como un elemento <receiver> y deberemos aportar la
siguiente informacin:
Atributo name: Referencia a la clase java de nuestro widget, creada en el
paso anterior.
Elemento <intent-filter>, donde indicaremos los eventos a los que
responder nuestro widget, normalmente aadiremos el
evento APPWIDGET_UPDATE, para detectar la accin de actualizacin.
Elemento <meta-data>, donde haremos referencia con su
atributo resource al XML de configuracin que creamos en el segundo paso
del proceso.

También podría gustarte