Publicado el Deja un comentario

ANDROID PRIMEROS PASOS
Con todos los programas instalados, ya estamos preparados para el primer proyecto Android.
En la pantalla principal de Eclipse, ir a: Menú Archivo > Nuevo > Proyecto Android.
Project Name
En la opción Project Name se debe rellenar Ejemplo. Este es el nombre que tendrá de forma global el proyecto.
Contents
En el apartado Contents, se dejarán marcadas las opciones por defecto. Lo que hace es crear un proyecto nuevo en el workspace que se elige al iniciar Eclipse.
Target
En la tabla Target, se indica la versión de Android para la que se va a crear el proyecto.
Properties
En el apartado Properties se deben rellenar: por un lado Application name, que será el nombre de la aplicación que se va a crear, y puede coincidir con el nombre del proyecto; por otro lado, el Package name, que sirve para organizar el código en paquetes, ej: hd.curso.ejemplo.
Create Activity
Debe asegurarse que aparece marcada la opción Create Activity. Esta opción crea por defecto la ‘actividad’ principal del proyecto, la actividad se refiere a las pantallas de la aplicación que se ven en el telefono.
Finish
Pulsar el botón Finish.
Ir al PackageExplorer y desplegar las carpetas del proyecto Ejemplo, pulsando la flecha gris de la izquierda.
Ejemplo > desplegar la carpeta src > desplegar el paquete hd.curso.ejemplo > doble click en Ejemplo.Activity.java
EXPLORANDO EL PROYECTO
Los proyectos son carpetas que se almacenan en la carpeta que se haya indicado como workspace, y tienen el nombre que se le da en la ventana de creación de proyecto. En este caso particular, el proyecto ha recibido el nombre ‘Ejemplo’ y, como se puede ver, corresponde con la carpeta principal que muestra el explorador de paquetes.
El resto de carpetas ‘hijas’ de la carpeta principal del proyecto son fijas, al igual que algunos de los archivos que aparecen, y serán comunes a cualquier proyecto Android que se realice. A continuación se ven en detalle cada una de las carpetas y los archivos más importantes:
Carpeta SRC
Esta carpeta contiene el código fuente de las aplicaciones, organizado en uno o más paquetes, que agrupan a una o más clases java, los archivos del tipo .java. En estos ficheros es donde se crean las actividades.
Aquí es donde se almacena todo el código que se escribe para dotar de funcionalidad al programa que se esté realizando.
Carpeta GEN
Esta carpeta no debe tocarse nunca ya que aquí se encuentran los archivos que genera automáticamente el entorno.
Carpeta ASSETS
Aquí se guardarán archivos auxiliares que puedan necesitar las aplicaciones para funcionar (como ficheros de sonido).
Carpeta RES
Es otra carpeta de recursos para la aplicación, pero es más importante porque contiene aquellos recursos fundamentales para esta, como son las pantallas que se le muestran al usuario, los iconos con los que se representará la aplicación, etc. Esta carpeta se subdivide en otras, para organizar los archivos por ‘tipos’:
•           Carpetas del tipo drawable: Contienen ficheros de imagen del tipo jpg, gif, png. Por ejemplo, los iconos, imágenes que se muestren en la interfaz de usuario, fondos de la aplicación, etc.
•           Carpeta layout: Contiene ficheros xml que definen el aspecto de la interfaz del usuario.
•           Carpeta values: Entre otros, contiene el fichero string, donde se definen las cadenas de texto usadas en la aplicación.
Existen otras carpetas que aparecen según la complejidad de la aplicación, ire poniendo algunas conforme hagan falta.
Gracias a esta clasificación se puede tener organizado perfectamente un proyecto. La variedad de carpetas que ofrece Android permite además que se creen proyectos versátiles que se adapten a gran cantidad de situaciones; por ejemplo, mediante la organización de imágenes en diferentes tipos de carpeta drawable, se podrá cargar imágenes a diferentes resoluciones según el móvil en el que tenga que funcionar la aplicación; mediante el uso de diferentes carpetas del tipo value, se conseguirá tener aplicaciones en varios idiomas.
AndroidManifest.xml.
La información que contiene es similar a un esquema de los componentes del proyecto. Será leída por el sistema operativo del dispositivo justo al empezar a arrancar la aplicación para ‘comprender’ cuál es la estructura de esta y con qué características debe ejecutarse.
Entre otros, el Manifiesto realiza las siguientes acciones:
1.         Describe los componentes de la aplicación (actividades, servicios, proveedores de contenidos) y bajo qué condiciones deben lanzarse.
2.         Declara los permisos que debe tener la aplicación para acceder a determinados recursos del móvil/tablet o cómo debe interactuar con otras aplicaciones.
3.         Establece la versión de Android mínima sobre la cual la aplicación puede funcionar.
4.         Otros.
Este fichero sigue una estructura xml donde se definen etiquetas para detallar la actividad principal, los iconos y los permisos. Más adelante serán detalladas algunas etiquetas básicas.
Es MUY IMPORTANTE recordar que todos los componentes de un proyecto deberán indicarse en el AndroidManifest. Las actividades son uno de los tipos de componentes del proyecto.
COMPRENDIENDO LOS DISTINTOS ARCHIVOS
Vamos a abrir varios archivos:
•           Se desplegará (pulsar la flecha gris a la izquierda del nombre) la carpeta res, dentro de ella se desplegará la carpeta layout, doble click en main.xml.
•           De nuevo en res, desplegar la carpeta values, doble click en strings.xml.
•           Doble click en AndroidManifest.xml.
Pueden observarse las distintas pestañas correspondientes a los distintos archivos en el editor. Seleccionando con el ratón cada pestaña, se tiene acceso a los archivos.
Los archivos de tipo .xml tienen dos vistas: una muestra el código xml y otra muestra el xml de forma visual. El archivo main.xml de la carpeta layout se encarga de definir la pantalla que se le muestra al usuario/a nada más arrancar la aplicación. Aunque más tarde se probará en el emulador, se puede ver que en la aplicación sencilla que se ha desarrollado en esta unidad se mostrará el texto “Hello World, EjemploActivity!”.
Prestando atención a la imagen, la parte inferior tiene dos pestañas:
•           Graphical Layout: es la opción seleccionada en este momento (imagen superior); muestra el archivo main de forma visual. Se ve de manera gráfica la pantalla que se le muestra al usuario/a.
•           Main.xml: seleccionando esta pestaña, se muestra el mismo archivo pero directamente en código XML.
El codigo que ha creado el compilador para el ejemplo que estamos indicando es:
package hd.curso.ejemplo;
import android.app.Activity;
import android.os.Bundle;
public class EjemploActivity extends Activity {
                         /** Called when the activity is first created. */
                        @Override
                        public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.main);
                         }
}
Se encuentra en ejemplo.java.
La primera linea “package hd.curso.ejemplo;”, es el paquete donde se agrupará todo el código de la aplicación. Un paquete es un concepto java para agrupar clases semejantes, y la idea es parecida a las librerías que se usan en otros lenguajes de programación, que clasifican funciones o procedimientos.
Por ejemplo, un/una programador/a puede desarrollar un grupo de clases para dibujar elementos como por ejemplo, triángulos, cuadrados, círculos… Todas estas clases las definirá en un mismo paquete, con un nombre descriptivo, del estilo a hd.dibujo.geometria. De esta manera, en siguientes aplicaciones que sean desarrolladas, incluyendo ese paquete se tendrán disponibles todas esas clases.
Con las líneas del tipo:
import [nombre_paquete];
se le dice al programa que incluya las clases contenidas en esos paquetes porque van a ser usadas (no necesariamente todas). No debe preocupar el hecho de desconocer los paquetes de Android y/o Java, puesto que al usar clases en el código, si no se ha añadido el import correspondiente, Eclipse nos dará un aviso indicando qué paquete debe ser incluido.
Lo siguiente es la clase principal del programa:
public class Ejemplo Activity
extends Activity;
en esta clase se observan varias características de las actividadesAndroid muy importantes:
•           Las actividades deben ‘extender’ todas a la clase Activity desarrollada por Google. Cuando la clase Ejemplo.java extiende a la clase Activity, puede usar todos los métodos ya desarrollados por Google para la clase ‘general’ Activity, facilitando la tarea de los/las desarrolladores/as.
•           El método onCreate es uno de los métodos que Ejemplo.java ‘hereda’ de Activity. El código que contiene es el que se ejecutará al crearse la aplicación. Cuando el usuario/a de un dispositivo móvil pulsa el icono de la aplicación Ejemplo, el sistema operativo Android busca en el Manifiesto cuál es la actividad principal de la aplicación, para poder ejecutarla. Entonces, buscará qué es lo que debe hacer al crearla; para ello ejecutará las instrucciones dentro del método onCreate (se puede entender de la forma ‘al crear’ la aplicación, haz esto).
•           La línea setContentView(R.layout.main) le dice al programa que dibuje la pantalla que muestra al usuario/a tal y como esté definida en el fichero layout.xml.
Sin embargo, es importante hacer notar que no se le dice que busque el fichero tal cual, sino el recurso R.layout.main. En el proceso de transformación del programa de código fuente a ejecutable interpretable por el dispositivo, algunos de los recursos como los archivos xml ‘se convierten’ en clases.
En main.xml nos encotraremos con:
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
                        android:layout_width=”fill_parent”
                        android:layout_height=”fill_parent”
                        android:orientation=”vertical” >
                        <TextView
            android:layout_width=”fill_parent”
            android:layout_height=”wrap_content”
            android:text=”@string/hello” />
</LinearLayout>
se definen los elementos que componen la pantalla:
<LinearLayout>: comienza la vista lineal
</LinearLayout>: termina la vista lineal
La etiqueta LinearLayout define una ‘vista’ de la pantalla sencilla, donde como su nombre indica, los elementos que la componen se muestran de forma lineal, uno a continuación de otro.
Hay distintos tipos de etiquetas Layout, cada uno para un tipo de vista de pantalla diferente (en forma de tabla, con scroll, etc.).
Dentro de las etiquetas del tipo Layout, se definen los elementos que se presentan en la pantalla, tales como textos, campos editables, botones, imágenes, menús, etc. Al ser el primer programa, solo se compone de un elemento de Texto:
<TextView
   android:layout_width=”fill_parent”
   android:layout_height=”wrap_content”
   android:text=”@string/hello”
   />
Las etiquetas xml para elementos, como el elemento texto, engloban entre ellas distintas subetiquetas que indicarán, en este caso concreto, propiedades del texto, tales como el color (android:textColor), el tamaño (android:textSize), o el texto que debe aparecer en dicho elemento (android:text).
Si se escribe en la propiedad text:
android:text = “Hola”
este será el texto que aparezca en la pantalla. Sin embargo, como se ve en el código xml aparece:
android:text = “@string/hello”
@string/hello es una referencia al archivo string.xml, y dentro de este, a la etiqueta hello. Es decir, en lugar de escribir “Hola” directamente, android escribirá el texto señalado con la etiqueta hello en el archivo string.xml del proyecto.
Aunque ambas formas son válidas, es una práctica aconsejable definir las cadenas de texto en el fichero string, y referenciarlas desde el resto del código del proyecto. Una de las razones principales es tener ‘localizadas’ todos los textos en un mismo ‘lugar’ del proyecto. En aplicaciones de gran complejidad es posible usar los mismos textos en varias pantallas; si durante la elaboración del programa debieran cambiarse por cualquier motivo se darían dos posibles situaciones:
•           Que se haya escrito el texto en varios ficheros de vista de usuario (layouts) y se tenga que buscar uno por uno y cambiar el texto. Esto es una tarea tediosa y que puede dar lugar a equivocaciones.
•           Que los textos se referencien a archivos string, y solo haya que buscar una vez el texto en dicho fichero y cambiar el texto una sola vez.
La forma de abrir y cerrar etiquetas puede ser diferente según el elemento:
<LinearLayout>……..</LinearLayout>
<TextView> [aquí van las propiedades] />
<string name=…>……..</string>
Se debe tener el siguiente código en el string.xml:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string name=”hello”>Hello World, EjemploActivity!</string>
<string name=”app_name”>Ejemplo</string>
</resources>
Se aprecia que el archivo string.xml sigue también una estructura típica de etiquetas xml. Se han definido dos textos en este archivo strings del proyecto Ejemplo.
<string name=”hello”>Hello World, EjemploActivity!</string>
Se define la cadena de nombre “hello”; cuando se referencie esta cadena, como se ha visto en el archivo main.xml, @string/hello, se mostrará el texto Hello World, EjemploActivity!
<string name=”app_name”>Ejemplo</string>
Se define la cadena app_name, esta es una cadena especial que es la que define el nombre de la aplicación, tal y como aparecerá junto al icono cuando un/a usuario/a instale la aplicación en su teléfono móvil. Se indicará en el Android Manifest como texto que da nombre a la aplicación.
Probando lo que llevamos realizado:
Para ello se debe haber configurado un emulador. Hay dos posibilidades:
•           Menú RUN > Run as > Android Application
•           Seleccionar en Package Explorer la carpeta principal del proyecto, en este caso Ejemplo, botón derecho del ratón, Run as > Android Application.
Si el emulador no está arrancado, se arrancará y mostrará directamente el resultado de ejecutar el programa. Se recuerda que es recomendable tener el emulador previamente arrancado.
En breve continuara esta pequeña introducción a Android.
Please follow and like us:
Publicado el Deja un comentario

Objetivo del blog

Esta es mi primera entrada en el blog, donde ire aportando ideas, vivencias y otros.
Actualmente estoy empezando con la programacion de dispositivos moviles.
Despues de mirar muchas webs, he decidido a publicar una guia practica y sencilla de programacion Android y algo de Java (necesario para Android). No pretendo que sean tutoriales que se meten de lleno en tareas complicadas con tecnicismos que a veces cuesta comprender, mi objetivo es explicar de una manera sencilla la programacion, basandome en ejemplos y explicando el codigo que se genera.
Buscare que sea ameno y practico y que cualquiera pueda iniciarse sin necesidad de grandes conocimientos..
Seguire practicando para poder empezar a poner al dia este blog.
Gracias,

Please follow and like us: