Declares con Android

A continuación encontrarás traducido al castellano el artículo escrito por Travis Hill y que está publicado originalmente en el blog oficial de Xojo.

Escribir y utilizar declares en Android es muy similar a hacerlo en otras plataformas. La sintaxis es prácticamente la misma, pero hemos incorporado algunos añadidos para crear Declares que hagan más sencillo modificar Controles. Veamos un par de Declares fáciles de entender para mostrarte cómo funcionan.

En primer lugar vamos a obtener el número de versión de Android, lo típico que el usuario puede ver cuando está buscando la versión de Android que se está utilizando. Tal y como ocurre con cualquier Declare, lo primero consiste en buscar la llamada en la documentación de la plataforma. En el caso de Android se encuentra habitualmente aquí: https://developer.android.com/reference/

Tras buscar en la documentación de la plataforma encontramos cómo obtener la versión aquí: https://developer.android.com/reference/kotlin/android/os/Build.VERSION

La sección “Lib” del Declare contendrá el “path” o ruta a la función/propiedad de la cual queremos obtener el valor. Esto lo obtenemos de dicha página como:

android.os.Build.VERSION

La propiedad que queremos se llama “RELEASE” (la cadena de la versión visible por el usuario) y dado que queremos que nuestra función de Declare se llame de forma diferente lo definiremos como un alias.

En resumen, el Declare completo en Xojo para obtener la versión de Android sería:

Declare Function AndroidVersion Lib "android.os.Build.VERSION" Alias "RELEASE" As CString

Utilizamos “CString” para cualquier String devuelta desde la plataforma Android tanto por sencillez de uso como por compatibilidad del Declare —incluso aunque el tipo String de la plataforma pueda variar internamente no tendrás que preocuparte por ello—.

Puedes encontrar este Declare en la sección Examples de Xojo en el proyecto Platform > Android > Declare > Declare project.

Declares de Objeto

En Android encontrarás un nuevo formato de Declare especial que nos permite hacer llamadas directamente contra ciertos objetos y controles. Esto resulta de utilidad en el caso de que queramos crear con facilidad un Declare que cambie una propiedad de un control. Por ejemplo, veamos como ajustar el color de fondo de un MobileButton.

La forma clásica de utilizar este nuevo tipo de Declare de Objeto consiste en añadir un método Extends a un módulo. Dado que queremos extender un MobileButton con la capacidad de cambiar su color incluiremos un método llamado “SetBackColor” en un Módulo, usando los siguientes parámetros en dicho método: “Extends ctrl As MobileButton, c As Color”

Buscamos nuevamente en la documentación de la plataforma y observamos que en Android un Botón está considerado como una Vista y, por tanto, tiene el siguiente método: https://developer.android.com/reference/kotlin/android/view/View#setBackgroundColor(kotlin.Int)

No necesitamos un Alias en esta ocasión dado que en Xojo llamaremos a la extensión de método. Lo que haremos sin embargo es crear un Declare de esta forma:

Declare Sub setBackgroundColor Lib "Object:ctrl:MobileButton" (myColor As Integer)

Descomponiendo este declare, estamos llamando a la función setBackgroundColor. La librería (Lib) denota este nuevo tipo de declare de Objecto: un Objeto, separado por dos puntos, el nombre Xojo del objeto (en este caso nuestro parámetro “ctrl”), seguido por otros dos puntos y el tipo Xojo para el objeto.

La última línea de código necesaria para nuestra extensión de método será la llamada real a la función declarada:

setBackgroundColor(c.ToInteger)

Puedes ver este Declare y su método de ayuda en acción en la sección Examples de Xojo dentro de Platforms > Android > Declare > ButtonBackgroundColor project.

Ya hemos podido ver a usuarios utilizando Declares para extender sus proyectos Android durante nuestra fase pre-release, y algunos tienen previsto crear proyectos de Declares que harán públicos para todos en el futuro, de modo que su uso resulte aún más sencillo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *