Blog dedicado a la programación y a la informática en general

Ir al contenido | Ir al menú | Ir a las búsquedas

AndroidAnnotations

aa.jpg

AndroidAnnotations es un proyecto Open Source que ayuda a realizar un desarrollo más rápido de aplicaciones Android a través de anotaciones java. Además sin impacto en el rendimiento de la aplicación.

Su página oficial es http://androidannotations.org/

Editado: 12/06/2017

Para hacer uso de la librería del proyecto AndroidAnnotations tendremos que bajarnos las librerías desde aquí.

La versión actual es la 3.3.2 y por lo tanto tendremos dos ficheros jar: androidannotations-3.3.2.jar y androidannotations-api-3.3.2.jar.

Instalación en Android Studio

Añadir en build.gradle del proyecto:

dependencies {
    ...
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    ...
}

Añadir en build.gradle de la app:

apply plugin: 'com.neenbedankt.android-apt'

apt {
    arguments {
        resourcePackageName android.defaultConfig.applicationId
        androidManifestFile variant.outputs.collect()[0]?.processResources?.manifestFile
    }
}

dependencies {
    ...
	apt "org.androidannotations:androidannotations:4.3.0"
        compile "org.androidannotations:androidannotations-api:4.3.0"
    ...
}

Por último tendremos que activar el procesamiento de anotaciones en Android Studio. Para hacer esto tendremos que cerrar nuestro proyecto e ir a la pantalla de bienvenida de Android Studio, una vez en esta pantalla pulsaremos el botón Configure > Settings. Nos iremos a Build, Executions, Deployment, abriremos Compiler y entraremos en Annotation Processors. Ahí habilitaremos la opción Enable annotation processing tal y como se muestra en la imagen. enable_ann_as.png

Instalación en Eclipse

Para instalar la librería en Eclipse primero tendremos que comprobar que tenemos instalado Eclipse Java Development Tools, si no lo tenemos instalado tendremos que instalarlo mediante el menú Help > Install New Software. Tendrás que seleccionar el repositorio de tu clipse, por ejemplo, para Eclipse Juno será http://download.eclipse.org/releases/juno y buscar dentro de Programming Languages la entrada Eclipse Java Development Tools.

jdt.jpg

Teniendo ya creado nuestro proyecto Android, tendremos que seguir los siguientes pasos para incluir la librería:

  1. Copiar el fichero androidannotations-api-3.3.2.jar en nuestra carpeta libs y añadirla al Build Path.
  2. Irnos a Propiedades (del proyecto) > Java Compiler > Annotation Processing y dejarlo como en la siguiente imágen:procesadoanotaciones.jpg
  3. Dentro de Java Compiler > Annotation Processing > Factory Path tendremos que añadir androidannotations-3.3.2.jar (en mi caso, como un JAR externo). Si pulsamos en el botón Advanced tendremos que ver lo siguiente:

procesadoanotaciones2.jpg

Ya estaría el proyecto listo para empezar a introducir las anotaciones.

Empezamos: nota importante

Esta librería nos ahorra código porque lo escribe por nosotros, ¿cómo lo hace?, por ejemplo, podemos definir en nuestra Activity una propiedad TextView y la librería automáticamente nos referencia la propiedad con el objeto en en layout. Esto lo hace porque crea una clase que hereda de nuestra clase Activity y crea su propio método onCreate(...) donde instancia las propiedades.

Las clases que genera la librería se almacenarán en la carpeta .apt_generated que indicamos en la configuración.

Muy bien pero ¿qué significa todo esto?

Pues que la clase real que tendremos que utilizar a la hora de pasar de una Activity a otra y la que tendremos que referenciar en el AndroidManifest.xml son las clases que genera AndroidAnnotations, y estas se llamarán igual que nuestra clase original pero terminada en el caracter _. Por ejemplo: nuestra actividad MainActivity la declararemos en el archivo AndroidManifest.xml como MainActivity_.

@EActivity

Aclarado esto y con nuestro manifest al día ;) empezamos eliminando nuestro onCreate(..) de nuestra Activity, ya que se llamará desde la clase que se genera automáticamente. Para que la librería sepa el layout que le tiene que asignar utilizaremos @EActivity de la siguiente forma:

@EActivity(R.layout.activity_main)
public class MainActivity {

@AfterViews

Para ejecutar el código que solíamos poner en el onCreate(..) de nuestra actividad utilizaremos la anotación @AfterViews que hará que se ejecute el método después de que se asignen los objetos de nuestro layout a las propiedades de la Activity.

@AfterViews
protected void init() {
}

@ViewById

Para asignar los objetos de nuestro layout a las propiedades de la Activity usaremos la anotación @ViewById. Para utilizar esta anotación no podemos poner las propiedades como privadas, ya que si no la clase que hereda de nuestra Activity no tendrá acceso a las mismas. Podemos indicar a qué elemento corresponde o bien no indicarlo y se entenderá que el nombre de la variable es el mismo que el id que tiene en el layout:

@ViewById(R.id.txtUsuario)
TextView textViewUsuario;
@ViewById
TextView txtClave;

@InstanceState

Como no tenemos acceso al onCreate(Bundle savedInstanceState) AndroidAnnotations nos proporciona una anotación para realizar la persistencia de los valores de las propiedades de los objetos cuando la Activity se recarga que se llama @InstanceState. Simplemente hay que utilizarla y el sólo se encarga de todo:

@InstanceState
int pagina;

@Click

Esta librería también te ayuda con los eventos, por ejemplo, podemos indicar que se ejecute un método al hacer click en una View mediante @Click. Al igual que en @ViewById, esta anotación permite indicar u omitir el id del objeto de nuestro layout.

@Click(R.id.boton)
public void filtrar() {}

o bien

@Click
public void boton() {}

Para terminar y seguir insistiendo, pondré un ejemplo del paso entre actividades, donde se puede observar que en lugar de utilizar MainActivity.class se usaría la clase generada por la librería MainActivity_.class:

Intent intent = new Intent(this, MainActivity_.class);

Esta es sólo una pequeña parte para empezar a usar la librería, pero tiene muchísimas posibilidades como hilos, cliente HTTP, servicios, extras, etc. Podéis ver todo lo que permite en este enlace.

Saludos!

Añadir un comentario

El código HTML se muestra como texto y las direcciones web se transforman automáticamente.

Discusiones sobre el mismo tema

URL de retroenlace : https://www.dosmweb.com/blog/index.php?trackback/14

Fuente de los comentarios de esta entrada