Xamarin Android, primeros pasos
Miguel A. Gómez Colaboraciones 03/02/2017
En mi última entrada hice una introducción a los conceptos básicos en el desarrollo de aplicaciones para la plataforma iOS con Xamarin.iOS. El objetivo de este artículo es continuar profundizando en el desarrollo con Xamarin, focalizando en esta ocasión en el desarrollo con Xamarin.Android.
Xamarin.Android nos brinda el acceso completo a la API de Android, básicamente cualquier cosa que se pueda hacer con Java, se puede hacer con Xamarin y C#. Las aplicaciones Xamarin.Android se desarrollan principalmente con las clases de tres librerías diferentes:
java.*. Ofrece wrappers en C# para todas las librerías de Android en Java.
android.*. Permite el acceso en código C# a todas las APIs de Android.
Mono.NET. Incluye prácticamente la mayoría de clases de .NET.
Primera aplicación con Xamarin.Android
Al igual que en la entrada anterior crearemos una app sencilla con Visual Studio (Mac, Windows), en la cual se mostraría el incremento de un contador cada vez que se pulse un botón, en este caso con Xamarin.Android en lugar de Xamarin.iOS.
Desde Visual Studio, crea una nuevo proyecto escogiendo la plantilla vacía de Android (Blank App), y nombrala como "HelloAndroid".
Estructura del proyecto
Tras crear la solucion Visual Studio genera la estructura básica de una aplicación Android, veamos el contenido de cada uno de sus elementos:
-
References: contiene todas las dependencias necesarias para poder ejecutar la aplicación. Se pueden encontrar librerías .NET como System o System.Xml además de la librería Mono.Android.
-
Assets: contiene archivos que pueden ser utilizados por la aplicacion: archivos de texto, fuentes, etc. Los ficheros que se encuentran en esta carpeta son accesibles vía código gracias a la clase auto generada Assets.
-
Properties: contiene el archivo de manifiesto AndroidManifiest.xml. Este archivo contiene informaciún como el nombre, la versiún o los permisos necesarios.
-
Resources: contiene recursos de la aplicacion. Podemos acceder a los elementos de esta carpeta gracias a la clase auto-generada Resource. A su vez contiene tres carpetas:
-
Drawable: contiene recursos gráficos, en la plantilla por defecto incluye el icono de la aplicación, Icon.png.
-
Layout: contiene archivos de diseño de vistas de Android (.axml) utilizados para definir la interfaz de cada pantalla o Activity. Por defecto se incluye un layout principal denominado Main.axml.
-
Values: fichero xml que contiene constantes como pueden ser cadenas, enteros o colores.
A continuación comenzaremos a construir la interfaz de la app para Android, para ello abre el archivo Main.axml, podrás ver el diseñador de Android. Desde el menú de la caja de herramientas tendrás acceso a todos los controles disponibles en Android. Selecciona un Button y lo arrástralo a la ventana:
Con el boton seleccionado edita sus propiedades básicas modificando su identificador:
Una vez creada la interfaz, veamos cómo crear la lógica de la misma. Para ello, dirigete al Activity que controla la vista principal, MainActivity.cs, un Activity es una clase especial en Android que se corresponde con una pantalla de la aplicacion. En este se añadirá una variable que se usará de contador y nos suscribiremos al evento click del botón por medio de un delegado, en este último se incluirá la lógica necesaria para incrementar el mismo:
Esta clase es muy sencilla. En la primera línea tenemos el atributo activity el cual decora la clase MainActivity. Recibe tres parámetros en ellos se indica el nombre del activity, si se trata del activity principal y su icono, siempre y cuando queramos que éste se muestre en la barra de navegación.
A continuación se define la clase MainActivity, la cual consta, como ya he comentado, de una variable de tipo entero en el que vamos a ir almacenando el número de clics y el método protegido OnCreate(), el cual es ejecutado cuando el activity se crea por primera vez.
Dentro del método onCreate(), tenemos tenemos la mayor parte de la lógica relacionada con la funcionalidad del contador. Por medio de SetContentView(Resource.Layout.Main) se asigna el layout Main.axmla este Activity. Para acceder al código del botón insertado previamente, se hace uso del método FindViewById() el cual en este caso devuelve un botón y recibe el id que corresponde al botón (recuerda que el id se almacena en la clase autogenerada Resource).
Por último, se asigna un delegado al evento click del botón, en este caso se trata de una función anónima que lo único que hace es cambiar el texto del propio botón e incrementar el contador.
Resumen
En este artículo se ha tratado de introducir los elementos básicos para comenzar a desarrollar con Xamarin.Android. Aunque me he dejado muchas cosas en el tintero, la idea es continuar profundizando en próximas entradas en el desarrollo con Xamarin, en concreto con Xamarin Forms y en algunos patrones de diseño muy utilizados para maximizar el código compartido entre plataformas, como es el patrón MVVM.
Si te ha gustado la entrada valora y comparte en tus redes sociales. No dudes en comentar dudas, aportes o sugerencias, estaré encantado de responder.