Aprendiendo Android I

Aprendiendo Android I

Desarrollo y programación

Aprendiendo Android I

30 mayo, 2010 11:30

Estrenamos una sección llamada Aprendiendo Android. Cada 15 días, Vierco, nos traerá algunos trucos, snippets para facilitar la vida a los desarrolladores de android. Va por ellos ;)

Cuando alguien se propone desarrollar una aplicación para android, por lo general se sigue un planteamiento que va desde el concepto inicial de la idea hasta el resultado final. Aunque esto por supuesto, queda a gusto o manías del programador.

Una vez se tiene esa idea más o menos organizada, poseemos un esquema o escrito en la cabeza de lo que queremos hacer es cuando nos sentamos a programar “picando código”.

Nuestro proyecto empieza a avanzar pero en algún momento o punto del desarrollo se nos puede dar una situación que me atrevería a decir que no es desconocida para ningún desarrollador. Algo aparentemente sencillo o que habíamos dado por sentado no funciona como creíamos o simplemente no habíamos pensado en ello. Hemos desentramado las formas más complicadas de nuestra aplicación, pero algún pequeño detalle que ni nos habíamos planteado nos tiene detenidos.

Por ejemplo, sabemos que cuando tenemos abierta nuestra aplicación si ponemos nuestro teléfono o emulador en posición horizontal la pantalla rota y se adapta (este punto también lo tocaremos) a la nueva orientación. Pero ¿sabíamos todos que al rotar la pantalla comienza de nuevo el proceso completo de la actividad?.

Esto puede representar un serio problema si por ejemplo nuestra actividad reproduce sonido, ya que al rotar volverá a iniciarse la reproducción montándose con la que ya se está reproduciendo. Pequeños inconvenientes como este pueden ser frecuentes encontrarlos a la hora de desarrollar una aplicación…son pequeños pero ahí están. Desde este artículo vamos a intentar tocar algunos de estos puntos para que no tengan que representar un retraso en el desarrollo de vuestras aplicaciones.

EVITAR QUE NUESTRA ACTIVIDAD COMIENCE DE NUEVO AL ROTAR LA PANTALLA

Pues ya que está mencionado, empecemos precisamente por aquí.

Para que nuestra actividad, o clase para los incondicionales de Java, continúe su curso al rotar la orientación sin que comience de nuevo el proceso, en el inicio código de la propia actividad añadiremos esto:

public class nombreActividad extends Activity {

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}…

Este código por sí solo no evitará el reinicio. Para completar la acción deberemos añadir esta línea a nuestra actividad en el manifest:

android:configChanges=»keyboard|keyboardHidden|orientation»…

Y listo, nuestra actividad continuará ejecutándose sin cambios al rotar la pantalla.

AJUSTE CORRECTO DE ELEMENTOS O VIEWS A LA PANTALLA EN EL CAMBIO DE ORIENTACION

Sigamos por el mismo camino;

Otra situación muy común es que montemos un layout para nuestra actividad donde verticalmente todos los elementos se colocan o encajan a la perfección pero al rotar horizontalmente la pantalla éste ya no se ajustará como debiera y se pierde toda la armonía o configuración de los elementos.
Realmente existen varias formas de afrontar esto. Desde aquí vamos a detallar una que puede resultar especialmente útil.
Los xml con el interface gráfico se guardan en la carpeta “layout”. Bien, pues vamos a crear una nueva carpeta llamada “layout-land”, dentro del directorio “res”.
Pongamos que dentro de la carpeta original “layout” tenemos el fichero xml llamado main.xml que se crea por defecto en cualquier proyecto, pues dentro de la nueva carpeta creada llamado “layout-land” vamos a crear un fichero que se llame también main.xml.

¿Para qué sirve esto? Cuando ejecutemos nuestra aplicación y rotemos horizontalmente la pantalla, si el programa detecta que existe una carpeta llamada “layout-land” en vez de rotar el main.xml original (pudiendo perder la configuración para que encaje en la pantalla) cargará el main.xml que esté dentro de “layout-land”.

Esto nos permite crear un xml para cuando estemos corriendo la aplicación en vertical y otro para cuando estemos en horizontal, asegurándonos de este modo que siempre tendremos un interface gráfico sin errores.


MOSTRAR UN MENSAJE RÁPIDO

Algunas veces es necesario informar al usuario o confirmarle una acción de forma rápida y directa, para eso android contiene los llamados mensajes tipo “toast”, los cuales se imprimirán en pantalla con el texto que queramos, evitándonos tener que crear una nueva alerta, o si nos complicamos la vida, una nueva actividad.
El código de un mensaje “toast” es tan sencillo como esto:


Toast.makeText(NOMBREACTIVIDAD.this,»Elandroidelibre.com»,Toast.LENGTH_SHORT).show();

Cómo decíamos, se imprimen en pantalla durante unos segundos, no obstante si se quiere prolongar algo más el tiempo de prolongado no tenemos mas que modificar el comando SHORT por LONG.

PERO.. ¿Y SI QUEREMOS UN MENSAJE MÁS DETALLADO?

Una vez vista la utilidad informativa del mensaje “toast”¿qué ocurre si lo que necesitamos es un mensaje informativo que requiera de una interacción con el usuario?.

Pongamos un ejemplo: grabamos un nombre de usuario y una contraseña y queremos que la aplicación nos lance un menú donde aparezcan estos datos con un botón de confirmar o cancelar.

El “toast” simplemente muestra un texto (aunque también se puede crear con una imagen) de modo que para interactuar con el usuario crearemos un “alert dialog”.

public void cajaAndroideLibre (){
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
alt_bld.setMessage(«Guardar datos?») // Esto determina la pregunta de la ventana
.setCancelable(false)
.setPositiveButton(«Guardar»,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {

// Aqui ponemos el codigo a ejecutar
// al pulsar el boton «guardar»

}
})
.setNegativeButton(«Cancelar», new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {

// Aqui ponemos el codigo a ejecutar
// al pulsar el boton «Cancelar»

}
});
AlertDialog alert = alt_bld.create();
alert.setTitle(«Title»); // Aqui ponemos el titulo de la ventana
alert.setIcon(R.drawable.icon); // Aqui ponemos el icono de la ventana
alert.show();
}

Esto es un simple ejemplo del código que podréis modificar a vuestro antojo según se adapte mejor a las necesidades de vuestra aplicación. Fijaos que las líneas del código están comentadas para su mejor explicación.

Y hasta aquí algunos de los ejemplos que os comentábamos sobre los pequeños detalles sobre la programación android. Lógicamente existen muchísimos más, quedando a la curiosidad del lector. Esperamos que os sean de utilidad para crear vuestros propios códigos, y recordad que una aplicación requiere de más o menos conocimientos, algunos “truquitos” como estos pero sobre todo, requiere de ganas, ilusión y originalidad.

Un saludo,

Vierco.