Translate

domingo, 23 de junio de 2013

Actividades en Android

Una actividad en Android representa una pantalla la cual es presentada al usuario. Dependiendo de la complejidad de la aplicación es más probable el uso de diferentes pantallas se hacen necesarias.

Usualmente las actividades se encargan del procesamiento de los eventos disparados por el usuario. Y consisten de fragmentos que permiten que la Interfaz de Usuario se componga de actividades secundarias. Para la navegación entre actividades se inicia una nueva actividad. La mayoría de las Activitys están diseñadas para ocupar toda la pantalla sin embargo se pueden crea actividades flotantes o semitransparentes.


Ciclo de vida de una Activity.


Para manejar los cambios de estado Android provee una serie de eventos que son disparados entre cada transición de estado de una actividad. El ciclo de vida completo de una actividad es desde el método onCreate hasta el método onDestroy (cabe aclarar que muchas actividades son destruidas sin llegar al método onDestroy); el ciclo de vida visible de una actividad comprende unicamente los métodos onStart hasta onStop, y el ciclo de vida activo de una actividad va desde el método onResume hasta onPause.


El siguiente framento de codigo explica los elementos que se colocan dentro de cada uno de los métodos. Fuente: Professional Android 4 Application Development.





package com.roque.rueda.helloworld;

import android.app.Activity;
import android.os.Bundle;

/**
 * Created by Roque Rueda on 23/06/13.
 */
public class MyStateChangeActivity extends Activity {

    // Called at the start of the full lifetime.
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Initialize Activity and inflate the UI.
    }
    
    // Called after onCreate has finished, use to restore UI state
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        // Restore UI state from the savedInstanceState.
        // This bundle has also been passed to onCreate.
        // Will only be called if the Activity has been 
        // killed by the system since it was last visible.
    }
    
    // Called before subsequent visible lifetimes
    // for an Activity process.
    @Override
    public void onRestart(){
        super.onRestart();
        // Load changes knowing that the Activity has already
        // been visible within this process.
    }
    
    // Called at the start of the visible lifetime.
    @Override
    public void onStart(){
        super.onStart();
        // Apply any required UI change now that the Activity is visible.
    }
    
    // Called at the start of the active lifetime.
    @Override
    public void onResume(){
        super.onResume();
        // Resume any paused UI updates, threads, or processes required
        // by the Activity but suspended when it was inactive.
    }
    
    // Called to save UI state changes at the
    // end of the active lifecycle.
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        // Save UI state changes to the savedInstanceState.
        // This bundle will be passed to onCreate and 
        // onRestoreInstanceState if the process is
        // killed and restarted by the run time.
        super.onSaveInstanceState(savedInstanceState);
    }
    
    // Called at the end of the active lifetime.
    @Override
    public void onPause(){
        // Suspend UI updates, threads, or CPU intensive processes
        // that don’t need to be updated when the Activity isn’t
        // the active foreground Activity.
        super.onPause();
    }
    
    // Called at the end of the visible lifetime.
    @Override
    public void onStop(){
        // Suspend remaining UI updates, threads, or processing
        // that aren't required when the Activity isn’t visible.
        // Persist all edits or state changes
        // as after this call the process is likely to be killed.
        super.onStop();
    }
    
    // Sometimes called at the end of the full lifetime.
    @Override
    public void onDestroy(){
        // Clean up any resources including ending threads,
        // closing database connections etc.
        super.onDestroy();
    }

}

jueves, 13 de junio de 2013

Tipos de aplicaciones Android.


  • Primer plano: Son aplicaciones que son útiles únicamente solo cuando es activada y se suspende cuando no es visible. Un ejemplo claro de este tipo de aplicaciones son los juegos.
  • Segundo plano: Es una aplicación que es limitada en interacción, salvo por la configuración, estas aplicaciones se mantienen la mayor parte de su ejecución ocultas. Aplicaciones de este tipo son raras sin embargo sin son muy utilizadas, ejemplos son las aplicaciones de llamadas, responder mensajes SMS, alarmas.
  • Intermitente: Las aplicaciones que tienen un “buen diseño” caen en esta categoría. Son aplicaciones que permiten interacción pero realizan la mayor parte del trabajo en segundo plano. Un ejemplo de estas aplicaciones son el reproductor de música. O el cliente de correo.
  • Widgets y Live Wallpapers: Son aplicaciones que se presentan como parte de la pantalla de inicio o como fondos animados.

martes, 11 de junio de 2013

Color Android Studio

Para cambiar el color de AndroidStudio vamos a ir a File -> Settings.


Una ves ahí vamos Editor -> Colors and Fonts.


Vamos a modificar el Default Theme por Dracula


Nos solicita el reinicio de AndroidStudio.


Reiniciamos y listo nuestro nuevo look and feel.


domingo, 9 de junio de 2013

Entendiendo el proyecto Hola Mundo

Entendiendo el proyecto Hola Mundo.

Vamos a tratar de entender los elementos que se generaron en la publicacion pasada (http://progrmrmalasmanas.blogspot.mx/2013/06/android-studio-tutorial.html) donde se genera un proyecto HelloWorld usando AndroidStudio.


Si miramos en el proyecto generando veremos la clase Activity la que es la base para la interaccion visual y los componentes de la aplicacion. Se podria pensar que es similar a un formulario del desarrollo desktop.



La clase se encuentra en la carpeta src -> main -> java


package com.roque.rueda.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class HelloWorld extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.helloworld_activity);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.hello_world, menu);
        return true;
    }
    
}


En Android los componentes visuales son llamados Views, los cuales podrían compararse con los controles del desarrollo desktop. La plantilla que se genera con el proyecto sobre escribe el método onCreate el cual llama al método setContentView el cual asigna la interfaz. Esto inflando un recurso.



setContentView(R.layout.helloworld_activity);




Los recursos para el proyecto Android se almacenan en la carpeta res de la jerarquía de carpetas. Esta incluye varias carpetas layout (diseño de la interfaz de usuario), values (valores simples para la aplicación), drawable (archivos que se generan como imágenes .png, .9.png, .jpg, .gif) para una lista mas detallada vean aquí.





<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".HelloWorld">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>





Realizar la definición de la interfaz de usuario en un archivo xml y posteriormente “inflarla” es el método común para la creación de la interfaz de usuario. Para poder acceder a los elementos que se definieron en el archivo layout se agregan atributos a los Views en el archivo xml. Posteriormente se puede acceder a ellos utilizando el metodo findViewById el cual nos retorna una instancia de un View. A continuacion se muestra una modificacion para agregar un atributo al TextView donde se muestra el texto “HelloWorld”.


<TextView
        android:id="@+id/hello_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />


Básicamente se asigna un identificador a ese View. Y esto nos permite acceder a el de la siguiente manera desde la clase HelloWorld.java.



TextView helloWorld = (TextView) findViewById(R.id.hello_text);


Alternativamente (aunque usualmente no se utiliza por no ser considerado una buena practica), puedes generar el layout en código como se muestra en el siguiente fragmento de código.



protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

//        setContentView(R.layout.helloworld_activity);
//        TextView helloWorld = (TextView) findViewById(R.id.hello_text);

        // Params that are used to set up the main layout
        LinearLayout.LayoutParams params;
        params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);

        // Params to the text view.
        LinearLayout.LayoutParams textView;
        textView = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        
        // Layout that will contain all the views
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        
        // Set the text of the textView
        TextView myTextView = new TextView(this);
        myTextView.setText(getString(R.string.hello_world));
        
        // Add the views into the linear layout
        ll.addView(myTextView, textView);
        // Add the layout into the activity
        this.addContentView(ll, params);

    }



Todas las propiedades disponibles en código también se encuentran disponibles en xml. Ademas de permitir separación de el diseño visual del código de la aplicación. Ya que Android se ejecuta en una gran variedad de dispositivos, definir el diseño de la interfaz en el archivo xml facilita incluir diversos diseños optimizados para los tamaños de cada pantalla.

Saludos dudas y comentarios abajo!!

martes, 4 de junio de 2013

Android Studio Tutorial


Roque Manuel Rueda

Momento android. Los dispositivos moviles no habian sido más poplares; telefonos inteligentes con mayor capacidad son opciones regulares para los consumidores. Se puede encontrar a android en una gran variedad de dispositivos lo que permite una mayor audiencia para las aplicaciones. La infraestructura ofrecida por Google Play hace perfecto la distribucion a un gran numero de usuarios.
Hello World.
Creando tu primera aplicación en android studio.
  1.  Selecciona New Project de la ventana de inicio.


  2. 2.       Rellena el nombre de la aplicación con HelloWorld  ademas notaras que se puede incluir el nombre de  modulo, paquete, lugar donde se guardara asi como el sdk minimo tambien el sdk objetivo asi como el usado para la compilacion.
    3.       Selecciona el tema HoloLight with Dark Action Bar.
    4.       Deja marcada las casillas de Create custom launcher icon y create activity.



     5.       Ademas podemos indicar la imagen que se utilizara como icono de nuestra aplicación.


    6.       Una vez hecho esto vamos a seleccionar el estilo de navegacion de nuestra aplicación. Para este caso vamos a utilizar la aplicación en blanco.


    7.       Y precionamos finish. Veremos como se inicia la descarga de los componentes y la construccion de nuestro proyecto.



    8.       Al finalizar nos mostrara una vist de bienvenida con algunos tips sobre el ide. Les recomiendo que lean algunos.


    9.       Ahora la estructura del proyecto generada vemos la clase de nuestra actividad asi como el layout de la misma.


    10.       Vamos a precionar ejecutar nuestra aplicación para verificar como se ve en emulador de android.


    11.       Nos presenta un cuadro de dialogo para indicar el dispositivo donde se ejecutara.


    12. Presionamos ok en mi caso ya tengo un dispositivo por lo que se lanza una instancia del emulador con la aplicación que se acaba de crear


    Listo. Dudas y comentarios abajo saludos!.