banner

sábado, 14 de marzo de 2015

ANDROID STUDIO VS ECLIPSE

Crea tu primera Aplicación Android

Antes de empezar con esta serie de tutoriales, debemos elegir el IDE correcto para desarrollar las aplicaciones, hace ya varios años Eclipse ha reinado como entorno de desarrollo para aplicaciones móviles, y hace meses que Android Studio, un IDE especialmente para aplicaciones Android, sale a la luz después de una cuantas betas que nadie se atrevía a usar como IDE principal, cabe mencionar que se actualiza a un ritmo acelerado, por lo que es muy importante una conexión a internet.
Bueno si quisiéramos hacer una comparación entre estos dos entornos de desarrollo, debatiríamos mucho tiempo, por eso solo voy a mencionar las nuevas ventajas que trae el Android Studio, a comparación de Eclipse.

·         Está basado en IntelliJ IDEA, uno de los IDE para java de primer nivel (entre los mejores, con Eclipse, Netbeans).
·         Usa Gradle en vez de Ant de Eclipse, con solo mencionarlo nos brinda grandes ventajas
·         Integración de la herramienta Gradle encargada de gestionar y automatizar la construcción de proyectos, como pueden ser las tareas de testing, compilación o empaquetado.
·         Soporte para programar aplicaciones para Android Wear (sistema operativo para dispositivos corporales como por ejemplo un reloj).
·         Indexa todo el proyecto y hace predicciones sobre él.
·         Editor de diseño que muestra una vista previa de los cambios realizados directamente en el archivo xml.
·         Como se basa en módulos y proyectos, facilita la creación de apk’s para distintos dispositivos.
·         En cuanto a la codificación se puede rescatar que usa autocompletado contextual en comparación al ADT que usa autocompletado regido.
En cuanto a las desventajas:
  • Aunque ya ha se ha lanzado la primera versión estable, la v1.0, al estar en una fase inicial, siempre es susceptible de introducirse más cambios que puedan provocar inestabilidad entre proyectos de diferentes versiones.
  • Curva de aprendizaje más lenta para nuevos desarrolladores de Android.
  • El sistema de construcción de proyectos Gradle puede resultar complicado inicialmente.
  • En comparativa con Eclipse, menor número de plugins.
Quiero aclarar que la comparación es sólo en el contexto de aplicaciones Android, porque sabemos que Eclipse gobierna en muchos otros aspectos de programación.
Siempre es bueno echarle una probada a las nuevas tecnologías y software, antes de criticarlos, por eso para los tutoriales, aparte de aprender a crear aplicaciones Android, también aprenderemos a manejar el Android Studio que no es tan diferente al eclipse pero tiene sus particularidades.
En cuanto a la instalación, es sumamente fácil, el compilado lo podemos bajar de este link, puedes elegir entre descargar el compilado completo (Android Studio + SDK), o simplemente el IDE para los que tienen el SDK con Eclipse, también debemos tener Java en nuestro equipo, aunque ya salió Java 8, se recomienda usar Java 7. Durante la instalación de Android Studio puede que el software nos pida descargar actualizaciones, la decisión es opcional.
He aquí algunas imágenes sobre cómo realizar la instalación, algo sencillo y poco relevante pero siempre es bueno despejar dudas.





Antes de empezar a programar, configuraremos nuestro entorno asegurándonos que las rutas del sdk y java sean correctas.











No quisiera cansarles con mucha teoría (aunque es mucho muy importante estudiarla), así que los conceptos los pondré de acuerdo al avance del tutorial, para observar la estructura global de nuestro proyecto hacemos lo siguiente.


Cada carpeta contiene archivos específicos para determinadas tareas, lo iremos explicando conforme vayamos utilizándolos, para empezar la carpeta app es un módulo del proyecto, un módulo representa a nuestra aplicación, dentro del proyecto podemos tener varios módulos y estos a su vez representarían no solo a aplicaciones sino también a librerías, y otras cosas. Por lo general nuestros proyectos solo tendrán un módulo.
Esta es una breve descripción de las carpetas más usadas.

Las que estudiaremos por ahora son las carpetas java y layout, pueden entenderlo de esta manera: dentro de layout se encuentran archivos .xml que son como la interfaz gráfica de la app, por así decirlo; dentro de java está la funcionalidad de la interfaz gráfica (layouts), en archivos .java, poco a poco detallaremos más acerca de este asunto, por el momento resumimos:
Layout (.xml) = interfaz de usuario
Clases (.java) = funcionalidad de los layouts


Al crear un proyecto, siempre se crea una aplicación por defecto, un Hola mundo.

Para hacerla correr debemos poseer un dispositivo Android o en su defecto usar un AVD (dispositivo virtual android) para crear uno seguimos los pasos:










En otra ocasión les enseñare a hacerlo correr en un dispositivo físico, no es gran cosa pero tiene muchas ventajas.
Ahora crearemos nuestra app con algunas modificaciones sobre la app por defecto.
Lo que nunca debemos olvidar es que para crear cualquier tipo de software lo más importante es el análisis del mismo, la aplicación que vamos a crear será una variación al hola mundo, se llamará hola usuario.
Dentro de una caja de texto el usuario escribe su nombre y clickea un botón (hola), luego en un texto aparece la frase hola + nombre de usuario.

Lo primero que haremos es trabajar en la parte gráfica y luego pasaremos a la funcionalidad, ahora definamos los componentes que vamos a usar en la interfaz de usuario:
TextView, es simplemente una etiqueta o label como se conoce en otros lenguajes, se puede poner cualquier texto dentro, y darle formato.

EditText, Es una caja de texto editable, al tocar sobre este componente, automáticamente aparece el teclado táctil del dispositivo.

Button, no hace falta describirlo, realiza acciones al pulsarlo.

Ahora bien, la interfaz (archivos .xml), se puede definir de dos maneras, modo grafico o código. En el modo gráfico, simplemente se arrastran los componentes para agregarlos y en la barra del lado derecho se modifican sus propiedades. Android Studio genera automáticamente el código correspondiente en el xml. En modo texto (código), se hace código desde cero, como recomendación usaremos el modo código, debido a que tendremos más control sobre los componentes, no generaremos código innecesario y mantendremos cierta pulcritud y sencillez en nuestros archivos. Muchos recomiendan empezar usando el modo grafico para principiantes, personalmente me parece que es más fácil definir los componentes desde código.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <TextView
        android:id="@+id/tvNombre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Escribe tu nombre:"/>
        
    <EditText
        android:id="@+id/etNombre"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
        
    <Button
        android:id="@+id/btSaludo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="HOLA"/>

    <TextView
        android:id="@+id/tvSaludo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Saludo:"/>

    <TextView
        android:id="@+id/tvFraseSaludo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
Cada componente tiene propiedades generales como ancho, alto, id, pero también poseen propiedades específicas.
·         android:id Es el id que vamos a usar en los archivos java para hacer referencia al componente y darle funcionalidad.
·         android:layout_width y android:layout_height Son las dimensiones del componente, width=ancho, height=alto, se puede definir en pixeles (android:layout_width=”30dp”) o darle valores dinámicos (wrap_content, match_parent o fill_parent), de todo esto hablaremos en tutoriales posteriores.
·         android:text Es una propiedad que asigna un texto para mostrar se puede definir de dos formas, pero no ahondaremos ahora en eso, simplemente escribimos lo que queremos que muestre el componente entre comillas (android:text=”texto”).
Una vez entendido los conceptos y escrito el código, ya tenemos la interfaz de usuario terminada, si hacemos correr la aplicación nos mostrara la interfaz  pero sin ninguna funcionalidad, para eso debemos abrir el archivo ActividadPricipal.java, que es el que está asociado al xml, y se encuentra en la carpeta java de nuestro modulo app.
Veremos que ya tiene un poco de código escrito, lo primero que debe saltarnos a la vista es que se extiende a Activity, las aplicaciones en android funcionan a base de actividades (activity), cada actividad está conformada por una interfaz (.xml) y funcionalidad (.java), se podría también decir que una actividad es una pantalla dentro de la aplicación y como sabemos una aplicación puede tener muchas actividades o pantallas. También observamos que dentro de la clase existen tres métodos: onCreate, OnCreateOptionsMenu y OnOptionsItemSelected el único que nos importa por ahora es el OnCreate, los otros dos son para implementar un menú, no nos complicaremos con eso ahora, por el momento podemos borrarlo, el método OnCreate se ejecuta cuando se crea la actividad, es como su constructor dentro de este método hacemos la llamada a los componentes y le damos su función. Dejo todo el código comentado para detallarlo.

package ejemplo.android.com.miprimeraaplicacion;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ActividadPrincipal extends Activity {

    //Declaracion de los componentes  a usar
    private EditText etNombre;
    private TextView tvSaludo;
    private Button btSaludo;

    //Metodo que se ejecuta cuando se inicia la actividad
    @Override //@Override quiere decir que estamos sobreescribiendo un metodo propio de la clase padre(Activity)
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.actividad_principal); //asocia el layout a la actividad y lo muestra en pantalla

        //Referencia a los controles que vamos a usar, dentro de findViewById, esta el id respectivo
        // a cada control creado en el archivo xml
        etNombre = (EditText)findViewById(R.id.etNombre);
        tvSaludo = (TextView)findViewById(R.id.tvFraseSaludo);
        btSaludo = (Button)findViewById(R.id.btSaludo);

        /*El proceso es el siguiente: cuando el usuario escribe su nombre, y presiona el boton (btSaludo)
        se produce un evento, debemos capturar el evento y realizar una accion, en este caso el evento
        es el click en el boton, la accion seria tomar el valor de la caja de texto (etNombre) y concatenarlo
        con la palabra hola, posteriormente mostramos el texto completo en el textView (tvSaludo)
        */

        //Creamos el escuchador del  evento click del boton
        btSaludo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //aqui ponemos lo que querramos que se haga cuando se presiona el boton
                String nombre = etNombre.getText().toString(); //1ro tomamos el texto de el editText (etNombre)
                String saludo = "Hola " + nombre; //2do concatenamos la palabra hola + el texto introducido
                tvSaludo.setText(saludo);//Finalmente mostramos el saludo completo en el textView
            }
        });

    }

}


Luego verificando que no tenemos errores, hacemos correr la aplicación en el AVD que creamos anteriormente.






Bueno, espero les haya servido como introducción, seguiremos con lo básico en el siguiente tutorial y detallando un poco más el desarrollo de aplicaciones android.
Si no se entendió algo o tienen preguntas, siéntanse libres de comentar, preguntar o sugerir, El mundo de las aplicaciones android es muy grande como para resumirlo en unos cuantos tutoriales, tal vez lo dividamos en secciones.

1 comentario:

  1. Muy buenas noches, excelente el tutorial, muchas gracias.
    Si no fuera mucha molestia pudiera colocar también como realizar el último ejemplo mediante "modo grafico". Gracias.

    ResponderEliminar