05/04/2019Artículo original
Conceptos básicos Android
- View: Representa el componente básico en el que se apoyantodos los elementos que construyen una interfaz. Todos los elementosque generan interfaces heredan de la clase View
- Activity: Encargada de mostrar la interfaz deusuario e interactuar con él. Responden a los eventos generados porel usuario (pulsar botones etc). Heredan de la claseActivity.
- Services: No tienen interfaz visual y se ejecutanen segundo plano, se encargan de realizar tareas que deben continuarejecutandose cuando nuestra aplicación no está en primer plano.Todos los servicios extienden de la clase Service
- Content Provider: Ponen un grupo de datos a disposición de distintas aplicaciones, extienden de la clase ContentProvider para implementar los métodos de la interfaz, pero para acceder a esta interfaz se ha de usar una clase llamada ContentResolver.
- BroadcastReceiver: Simplemente reciben un mensajey reaccionan ante él, extienden de la clase BroadcastReceiver, notienen interfaz de usuario, pero pueden lanzar Actividades comorespuesta a un evento o usar NotificationManager para informar alusuario.
- Intent: Permite realizar la comunicación ytransferencia de datos entre objetos de la clase Activity o Service.También permite iniciar otras Activities o lanzar otrasaplicaciones.
Hola Mundo
Veamos ahora cómo crear la típica aplicación Hola Mundo .
Crear el proyecto
Para ello, en Android Studio, hacemos click en File » New Project. Una vez creada, veremos que la estructura de la aplicación es la mostrada en la imagen.
Componentes del proyecto
Los proyectos de Android siguen una estructura fija de carpetas quedebemos respetar.
Carpeta Res
Esta es una de las carpeta que más se va a usar junto con src. Secompila y se generan referencias en la clase R, para acceder a ellosdesde código. Están escritos en XML. El propósito de esta carpeta es separar la lógica de la aplicación de la interfaz.
- anim: Definición de Animaciones.
- color: Definición de colores
- drawable: Ficheros bitmap(.png, .9.png, .jpg, .gif) o XML con contenidos que se dibujarán (fondos, botones etc).
- layout: Definen la capa de interfaz de usuario
- menu: Definición de los menús de la aplicación
- raw: Binarios que no se pueden colocar en las otras carpetas.
- values: Definición de estilos, cadenas de texto para Localización etc.
- xml: Ficheros XML que pueden ser accedidos en tiempo de ejecución
Hola Mundo
Pasemos ahora a describir los distintos componentes de la aplicación.
La apliación creada por defecto tendrá un Activity muy simple, uno de los métodos más importantes de esta clase es onCreate, en él se crean y se instancias los componentes necesarios para dicha Activity, se instancias componentes gráficos, se establecen los callbacks necesarios, eventos etc. El código más simple que se puede obtener en este método es el siguiente:
@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);/** * Método encargado de “inflar” la actividad. * Inicializar cada componente de la actividad * con su correspondiente View. */setContentView(R.layout.activity_main);}
Es importante añadir la línea setContentView(R.layout.activity_main);, ya que aquí se define qué layout (Interfaz gráfica) va a usar esta Activity. De no añadirla, cualquier referencia que intentemos hacer de un componente gráfico fallará.
Ciclo de vida de una Activity
La siguiente imagen muestra el ciclo de vida de una Activity, esto es qué flujo de llamadas siguen las aplicaciones. Como vemos, onCreate es el primero método en llamarse al lanzar una Activity, es por ello que en él debemos hacer todas las inicializaciones necesarias. Si lo necesitamos, podemos implementar todos y cada uno de estos métodos. Por ejemplo, en una aplicación de vídeo, interesará detener la reproducción cuando se recibe una llamada, o cuando la pantalla se apaga, toda esa lógica deberá ir en el método onPause o onStop, y debería reanudarse implementando la lógica en onRestart o onResume.
./res/layout/activity_main.xml
Este es el fichero que especifica qué interfaz gráfica queremos en nuestra Activity (Recordemos la llamada setContentView(R.layout.activity_main);). En este caso, la interfaz es un simple TextView que mostrará el mensaje Hola Mundo. (El texto se ha especificado haciendo referencia al fichero de cadenas (strings.xml) definido más abajo, en concreto se hace referencia a la cadena de texto de valor hello_world).
<RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world"/></RelativeLayout>
./res/values/strings.xml
Aquí se definen las cadenas de texto a usar en la aplicación. Siempre deben escribirse en un fichero XML dentro de la carpeta values, ya que de este modo podremos traducir la aplicación a otro idioma fácilmente con tan solo crear otra carpeta llamada values-de, por ejemplo, que contenga las cadenas de texto en Alemán. En este caso, se crea una única cadena de texto de nombre hello_world y de valor Hello World!.
<resources><stringname="hello_world">Hello world!</string></resources>
En el siguiente artículo se verá a fondo la aplicación Hola Mundo tal y como la crea en estos momentos Android Studio, usando Fragments en lugar de Activity.