Aprendiendo Android II
Continuamos con una nueva entrega sobre trucos, explicaciones, o snippets que puedan sernos útiles en el desarrollo de nuestras aplicaciones android.
Anteriormente vimos que una vez el desarrollador tiene el esquema de lo que va a ser su código, puede encontrarse con pequeños inconvenientes no previstos que retrasarán el ritmo de creación. En esta ocasión vamos a centrarnos en explicaciones o ejemplos básicos que responden a algunas de las cuestiones habitualmente más planteadas al comenzar el desarrollo de aplicaciones. Esta entrega puede estar entregada a un nivel inicial con la idea de que poco a poco, vayamos avanzando juntos.
Carpeta R
Comencemos explicando una de las carpetas que vienen incluidas en todos los proyectos de android, la capeta llamada R. Esta carpeta no requiere de intervención del usuario ya que es android quien se encarga de ir rellenado su contenido y gestionando su administración, es más, si entramos en esta carpeta veremos un poco amistoso mensaje indicando que no se manipule manualmente…
¿Para qué sirve entonces? Expliquémoslo de esta forma:
Siempre que creemos una View (recordemos View como un elemento de pantalla, sea un botón, un EditText, etc.) android tiene que catalogarlo y referenciarlo para que cuando lo queramos usar podamos especificarle desde nuestro código el elementos gráfico o “View” concreto al que queremos aplicarle un valor o función. Cuando creamos un elemento desde del layout xml, al querer asignarle una función desde código, android no llama directamente al elemento o View del layout, lo que hace entonces es crearle una referencia en R. Veamos un ejemplo:
Como decíamos al principio todo este proceso se hace de forma automática no siendo necesaria la intervención del desarrollador.
¿CÓMO SE RECLAMA O REFERENCIA DESDE CODIGO UNA VIEW O ELEMENTO DEFINIDO EN R?
Pongamos el ejemplo de haber creado un botón en el layout, a este botón le hemos asignado el nombre o ID “Boton1”. Ahora en nuestro código le vamos a indicar a android que vamos a dar alguna utilidad al elemento gráfico o View tipo Button llamado “Boton1”, sería de esta forma:
Button botonhola =(Button) findViewById(R.id.Boton1);
Con esta simple línea estamos declarando que usamos un nuevo elemento tipo botón “Button”, que a partir de ahora en nuestro código se va a llamar “botonhola” y que lo busque en su fichero R con la ID que nosotros mismos le asignamos anteriormente “Boton1”.
De esta forma tan sencilla es como decimos a android los elementos, sea del tipo que sean, que vamos a usar en nuestro código… Y ya que nos encontramos aquí:
¿Cómo le asigno una función a un botón?
Una vez android sepa que vamos a usar la View del botón el comportamiento más normal de este elemento es que al pulsarse se ejecute determinada acción, esto se denomina en muchos círculos como listeners o “escuchadores”. Android escuchará la pulsación del botón y aplicará la acción que queramos ejecutar. Este código sería así:
Button botonhola =(Button) findViewById(R.id.Boton1);
botonuno.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
// Código a ejecutar al pulsar el botón
Toast.makeText(elAndroideLibre.this, «Pulsado», Toast.LENGTH_SHORT).show();
}
});
Como podemos comprobar hemos indicado que al pulsar el botón nos muestre un mensaje tipo toast confirmando que éste ha sido pulsado, la explicación de esta forma de mostrar un mensaje la tenéis en la pasada entrega de ésta sección.
Cambio de Actividades
Aprovechando que hablamos de funciones vamos a explicar una de las que sin dudas es de las más solicitadas en el inicio de programación de aplicaciones android, el cambio de actividad.
Lo primero, y aunque quizá ya lo sepamos, hacemos un breve recordatorio: ¿qué es una actividad? Las aplicaciones de android funcionan principalmente por actividades (constan también los servicios, etc. pero éstos los veremos más adelante) intentando hacer un resumen, una actividad, denominada clase en Java, es cada pantalla de la aplicación que puede ver el usuario. Veamos este simple gráfico para entender de lo hablamos:
Haciendo un inciso, algo a tener siempre muy en cuenta, son los ciclos de vida de una actividad. Sobre esto hablaremos detenidamente en una próxima entrega. Mientras tanto, es interesante familiarizarse con esta dirección de la documentación oficial.
http://developer.android.com/intl/de/guide/topics/fundamentals.html
¿Cómo pasamos de una actividad a otra? Pues como muchas de las funciones de android lo haremos mediante un Intent. En este Intent declararemos en la actividad que nos encontramos y nuestra actividad de destino. Una vez tengamos creadas las dos actividades introducimos este Intent en la clase de origen:
Intent intent =new Intent();
intent.setClass (ActividadUno.this, ActividadDos.class);
startActivity(intent);
finish();
Si queremos ir probando, podemos asignar este Intent al listener del botón que hemos creado anteriormente y por si alguno de los lectores nunca ha creado una nueva clase o actividad, facilitamos una breve explicación de cómo hacerlo.
Creación de una nueva Actividad
Desde Eclipse, entorno de desarrollo usado de forma mayoritaria en programación de android, pulsamos con el botón derecho sobre el nombre de nuestro package y seleccionamos “new class”.
Una vez le hayamos puesto el nombre a nuestra nueva actividad es conveniente, ya que no se aplica por defecto, añadirle el código inicial de una actividad android, el cual es el siguiente:
package nombre.del.nombreDelPaquete;
import android.app.Activity;
import android.os.Bundle;
public class nombreActividad extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nombre del layout que aplica);
}
}
Lógicamente sustituiremos nombreActividad por el nombre elegido para nuestra actividad y nombre del layout que aplica por el nombre del layout o interface gráfico que hayamos creado para nuestra nueva actividad.
La actividad inicial que se crea en un nuevo proyecto de android llama por defecto al interface gráfico o layout llamado “main”, nosotros elegiremos el nombre de los nuevos layouts que creemos para las nuevas actividades.
Para crear el nuevo layout lo haremos de la siguiente forma:
Dentro del árbol de nuestra aplicación desplegamos la carpeta “res” y dentro de esta pulsamos con el botón derecho sobre la carpeta llamada “layout”, seleccionamos “new / Android XML file”e introducimos el nombre elegido para este entorno.
Y por último el importante paso de declarar nuestra nueva actividad en el manifest de nuestra aplicación, esto lo haremos de la siguiente manera, accedemos al manifest:
Y una vez con el código, declaramos la nuestra nueva actividad:
nombreActividad « android:label=»@string/app_name»>
Para poder comprobar el funcionamiento de las acciones explicadas y tener la posibilidad de modificar o variar el código, adjuntamos las diferentes partes del proyecto para que se puedan aplicar sobre un proyecto de eclipse android.
Para no perder la esencia de lo iniciado en la anterior entrega, os facilitamos un rápido snippet para hacer vibrar nuestro móvil, este código igualmente puede aplicarse a nuestro botón para que al pulsarse llame a la orden de vibración.
Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(50);
Donde 50 representa la duración de la vibración pudiendo modificarse esta a nuestro antojo.
Es importante no olvidar que para que la vibración se ejecute de forma correcta es necesario añadir a nuestra aplicación el permiso de vibración en el manifest:
A este respecto, es interesante recordar que eclipse provee al desarrollador de diferentes formas de hacer las acciones, pudiendo añadir, por ejemplo, el permiso directamente desde el manifest o hacerlo desde una pestaña gráfica situada en el propio manifest llamada “permissions”, haciendo el proceso visualmente mas sencillo.
Espero que esta nueva entrega haya sido de utilidad y provecho, en la próxima tocaremos otros temas interesantes como la lectura de datos del teléfono o el envío de sms…
Animaros a todos a usar estos ejemplos y a ampliar sobre ellos, como decíamos anteriormente, la programación requiere de conocimientos, pero sobre todo de ganas, ilusión y originalidad.
Saludos.