13.- dam - widgets en android

18
Widgets en Android Ing. Edgar Lizárraga Ugarte

Upload: jesus-mendoza-huillca

Post on 19-Jan-2016

17 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 13.- Dam - Widgets en Android

Widgets en Android

Ing. Edgar Lizárraga Ugarte

Page 2: 13.- Dam - Widgets en Android

Widgets en Android

• En esta primera parte vamos a crear un widgetmuy básico, consistente en un simple marcorectangular negro con un mensaje de textopredeterminado (“Mi Primer Widget“). Lasencillez del ejemplo nos permitirá centrarnos ensencillez del ejemplo nos permitirá centrarnos enlos pasos principales de la construcción de unwidget Android y olvidarnos de otros detalles quenada tienen que ver con el tema que nos ocupa(gráficos, datos, etc).

Page 3: 13.- Dam - Widgets en Android

Widgets en Android

Page 4: 13.- Dam - Widgets en Android

Widgets en Android

Los pasos principales para la creación de un widgetAndroid son los siguientes:

• Definición de su interfaz gráfica (layout).

• Configuración XML del widget(AppWidgetProviderInfo).(AppWidgetProviderInfo).

• Implementación de la funcionalidad del widget(AppWidgetProvider) , especialmente su evento de actualización.

• Declaración del widget en el Android Manifest de la aplicación.

Page 5: 13.- Dam - Widgets en Android

1.- Definición de su interfaz gráfica (layout)

En esta ocasión, la interfaz del widget estarácompuesta únicamente por un parde frames (FrameLayout), uno negro exterior yuno blanco interior algo más pequeño parasimular el marco, y una etiqueta de textosimular el marco, y una etiqueta de texto(TextView) que albergará el mensaje a mostrar.Veamos cómo queda el layout xml, que paraeste ejemplo llamaremos “miwidget.xml“:

Page 6: 13.- Dam - Widgets en Android

1.- Definición de su interfaz gráfica (layout)

Page 7: 13.- Dam - Widgets en Android

1.- Definición de su interfaz gráfica (layout)

Cabe destacar aquí que, debido a que el layoutde los widgets de Android está basado en untipo especial de componentesllamados RemoteViews, no es posible utilizaren su interfaz todos los contenedores yen su interfaz todos los contenedores ycontroles que hemos visto en artículosanteriores sino sólo unos pocos básicos que seindican a continuación:

Page 8: 13.- Dam - Widgets en Android

1.- Definición de su interfaz gráfica (layout)

• Contenedores: FrameLayout, LinearLayout,RelativeLayout y GridLayout (éste último a partir de Android 4).

• Controles: Button, ImageButton, ImageView,TextView, ProgressBar,Chronometer, AnalogClTextView, ProgressBar,Chronometer, AnalogClock y ViewFlipper. A partir de Android 3 también podemos utilizar ListView, GridView, StackView y AdapterViewFlipper, aunque su uso tiene algunas particularidades. En este artículo no trataremos este último caso, pero si necesitas información puedes empezar por la documentación oficial sobre el tema.

Page 9: 13.- Dam - Widgets en Android

2.- Configuración XML del widget

Como segundo paso del proceso deconstrucción vamos a crear un nuevo ficheroXML donde definiremos un conjunto depropiedades del widget, como por ejemplo sutamaño en pantalla o su frecuencia detamaño en pantalla o su frecuencia deactualización. Este XML se deberá crear en lacarpeta \res\xml de nuestro proyecto. Ennuestro caso de ejemplo lo llamaremos“miwidget_wprovider.xml” y tendrá lasiguiente estructura:

Page 10: 13.- Dam - Widgets en Android

2.- Configuración XML del widget

Page 11: 13.- Dam - Widgets en Android

2.- Configuración XML del widget

Para nuestro widget estamos definiendo lassiguientes propiedades:

• initialLayout: referencia al layout XML quehemos creado en el paso anterior.

• minWidth: ancho mínimo del widget en pantalla,• minWidth: ancho mínimo del widget en pantalla,en dp (density-independent pixels).

• minHeight: alto mínimo del widget en pantalla,en dp (density-independent pixels).

• label: nombre del widget que se mostrará en elmenú de selección de Android.

• updatePeriodMillis: frecuencia de actualizacióndel widget, en milisegundos.

Page 12: 13.- Dam - Widgets en Android

2.- Configuración XML del widget

Existen varias propiedades más que se puedendefinir, por ejemplo el icono de vista previa delwidget (android:previewImage, sólo paraAndroid >3.0) o el indicativo de si el widgetserá redimensionable (android:resizeMode,será redimensionable (android:resizeMode,sólo para Android >3.1) o la actividad deconfiguración del widget (android:configure).El resto se pueden consultar enla documentación oficial de la claseAppWidgetProviderInfo.

Page 13: 13.- Dam - Widgets en Android

3.- Implementación de la funcionalidad del widget (AppWidgetProvider)

Este consiste en implementar la funcionalidadde nuestro widget en su clase java asociada.Esta clase deberá heredarde AppWidgetProvider, que a su vez no es másde AppWidgetProvider, que a su vez no es másque una clase auxiliar derivadade BroadcastReceiver, ya que los widgets deAndroid no son más que un caso particular deeste tipo de componentes.

Page 14: 13.- Dam - Widgets en Android

3.- Implementación de la funcionalidad del widget (AppWidgetProvider)

En esta clase deberemos implementar los mensajesa los que vamos a responder desde nuestro widget,entre los que destacan:

▫ onEnabled(): lanzado cuando se crea la primerainstancia de un widget.instancia de un widget.

▫ onUpdate(): lanzado periodicamente cada vez quese debe actualizar un widget, por ejemplo cada vezque se cumple el periodo de tiempo definido por elparámetro updatePeriodMillisantes descrito, ocuando se añade el widget al escritorio.

▫ onDeleted(): lanzado cuando se elimina delescritorio una instancia de un widget.

▫ onDisabled(): lanzado cuando se elimina delescritorio la última instancia de un widget.

Page 15: 13.- Dam - Widgets en Android

3.- Implementación de la funcionalidad del widget (AppWidgetProvider)

En la mayoría de los casos, tendremos queimplementar como mínimo elevento onUpdate(). El resto de métodosdependerán de la funcionalidad de nuestrodependerán de la funcionalidad de nuestrowidget. En nuestro caso particular no nos haráfalta ninguno de ellos ya que el widget queestamos creando no contiene ningún datoactualizable, por lo que crearemos la clase,llamada MiWidget, pero dejaremos vacío por elmomento el método onUpdate().

Page 16: 13.- Dam - Widgets en Android

3.- Implementación de la funcionalidad del widget (AppWidgetProvider)

Page 17: 13.- Dam - Widgets en Android

4.- Declaración del widget en el AndroidManifest de la aplicación.

El último paso del proceso será declarar elwidget dentro del manifest de nuestraaplicación. Para ello, editaremos elfichero AndroidManifest.xml para incluir lafichero AndroidManifest.xml para incluir lasiguiente declaración dentro delelemento<application>:

Page 18: 13.- Dam - Widgets en Android

4.- Declaración del widget en el AndroidManifest de la aplicación.

El widget se declarará como un elemento <receiver> y deberemos aportar lasiguiente información:� Atributo name: Referencia a la clase java de nuestro widget, creada en elpaso anterior.� Elemento <intent-filter>, donde indicaremos los “eventos” a los queresponderá nuestro widget, normalmente añadiremos elevento APPWIDGET_UPDATE, para detectar la acción de actualización.� Elemento <meta-data>, donde haremos referencia con suatributo resource al XML de configuración que creamos en el segundo pasodel proceso.