En colaboración con LCLIS.COM - SOLUCIONES WEB PROFESIONALES Y ECONÓMICAS

miércoles, 4 de mayo de 2011

Desarrollo de aplicaciones en Android

Android
  • las aplicaciones ocupan toda la pantalla al 100%
  • un aplicación es un conjunto de varias ACTIVIDADES
  • Una actividad se estructura en una PILA, la que está arriba es la que se muestra
  • El botón BACK va a la anterior actividad de la Pila
  • Las aplicaciones Android se destruyen por el sistema operativo (no lo controlamos)
  • Hay métodos para controlar los estados de las actividades.
  • Una APLICACIÓN se ejecuta en UNA MAQUINA VIRTUAL.
Actividad
  • Es la interacción con el usuario
  • Consta de varios controles gráficos o VIEWS
  • Heredan de la clase ACTIVITY o de clases hijas de ella
  • Se deben declarar en el archivo de configuración xml AndroidManifest.xml
  • Para ir de una actividad a otra
    • startActivity(intent): la arranca y ya está
    • startActivityForResult(intent, requestCode) : se volverá con resultado de la actividad arrancada
      • onActivityResult(int requestcode, int resultcode, intent result) es como se captura el resultado
  • Se pueden usar actividades ya existentes de Android
Vista (VIEW)
  • Todas heredan de la clase view
  • Tienen elementos comunes como onclick
  • La clase ViewGroup sirve para haver vistas compuestas
Ejemplo
public class HelloWorld extendds Activity {
 @Override
 public void onCreate(Bundle saveInstanceState) {
  super.onCreate(saveInstanceState);
  setContentView(R.layout.main);
}

Ciclo de vida de las actividades
  • estados
    • Running: arriba de todo de la pila (la qe tiene el foco y vemos en pantalla)
    • Paused: es visible pero no tiene el foco (se usa principalmente en tablets)
    • Stopped: no es visible - aqui debemos guardar los datos, por si se pasa a Destroyed
    • Destroyed
  • métodos de transición entre estados
    • onCreate (es el que siempre debemos sobreescribir - override). Para inicializar (conexiones de datos, views). Se podría escribir toda la aplicación aqui pero no se recomienda, mejor onStart.
    • onStart: se muestra al usuario
    • onResume
    • onPause: cuando pierde el foco
    • onStop: ya no es visible. como onPause, pero se supone que durante largo tiempo no lo será. aqui se pueden liberar recursos.
    • onRestart: de onStop,a tener el foco otra vez
    • onDestroy: ya no se queda en la pila (podemos reescribirlo, pero no tenemos control de cuando se ejecuta)
Intent
  • es la INTENCIÓN de que se pase de una actividad a otra o una actividad haga algo
  • permite enviar parámetros entre actividades (de la misma u otras aplicaciones)
  • se define como
    • la acción que se desea realizar
    • bundle: datos (parámetros, mensajes.. entre actividades)
  • Ejemplo:
Intent myIntent = new Intent(...
myIntent SetData...
  • las intenciones se pueden invocar
    • explícita
    • implícita: usa el tag <intent-filter> del manifiesto
  • Si implicito, le indico acción (y opcionalmente categoría...)
<action android:name="android.intent.action.MAIN" />
  • se usan principalmente para moverse entre actividades
maneras de programas
  • explícita
  • implícita, definiendo intentos predefinidos
Ejemplo explícita
Intent myIntent = new Intent(Context, Activity.class)
startActivity(myIntent)
  • Las intenciones se pueden enviar
    • a una actividad
    • a cualquier actividad que se esté ejecutando (sendBroadcast)
      • por ejemplo, cuando hay una llamada entrante, cuando se acaba la batería, falta señal GPS, etc
Tutoriales
http://developer.android.com/guide/index.html
http://developer.android.com/guide/topics/intents/intents-filters.html

Fundamentos gráficos de UI
  • Activity: pantalla que se muestra al usuario
  • View: controles o widgets con el que el usuario interactua
  • Viewgroup: conjunto
View
  • es un area rectangular
  • heredan de android.view.View
  • ejemplos: TextView, EditText, Button, RadioButton, CheckBox, DatePicker, TimePicker
ViewGroup
  • es la clase base de los Layout
  • hay layous standard que nos facilita la vida
    • AbsoluteLayout: obliga a especificar las coordenadas de cada componente
    • TableLayout: colocados en celdas
    • LinearLayout: componentes colocados linealmente (default en vertical)
    • RelativeLayout: posición relativa al anterior componente (p.ej. a la derecha de.., centrado, etc)
  • ejemplos: ScrollView, etc.
  • Estructura de Arbol:
    • ViewGroup
      • ViewGroup
        • View
        • View
        • View
      • View
      • View
Dos maneras de definir un UI
  • Procedural
TextView tv = new TextView(this)
tv.SetWidth(100)
  • Declarativa: como xml (Se recomienda programar por capas, usando MVC)
<textView
  android:id="@+id/namelabel"
  android.text=
    • Clase de recursos R para la correlación entre los identificadores y tener los elementos accesibles
    • Como acceder a los componentes definidos en xml, por ejemplo para cambiar programáticamente algo del layout
textView tv = (Textview)findViewById(R.id.nameLabel)

Layout
  • Contenedor de un ViewGroup
Controles Gráficos
  • Texto
    • TextView
    • EditText
    • AutoCompleteTextView
    • MultiAutoCompleteTextView
  • Botones
    • Button
    • ImageButton
    • ToogleButton: 2 estado on/off
    • CheckBox
    • RadioButton
  • Lista
    • ListView: para crea una lista
      • se debe especificar el layout de la fila en si, pues el de la lista ya viene definido heredando de ListActivity
      • se usa ListAdapter: para gestionar los datos (es el enlazador entre la lista y los datos)Android tiene adaptadores para BBDD, arrays, etc.
    • WebView: pone un navegador dentro d euna actividad
para especificar el tamaño de un elemento
  • que sea tan grande como el contenedor padre (fill parent)
  • definiendo los pixels

Dos maneras de Programar
  • facilmente: con App Inventor
  • profesionalmente: con Eclipse y el plugin de Google Android
 App Inventor
  • http://appinventor.googlelabs.com
  • Instalación
    • instalar la aplicación en el PC 
    • en el movil: menu > configuracion > aplicaciones: marcar 'origenes desconocidos'
      • Desarrollo > activar 'depuración USB' y 'Pantalla activa'
  • Conectar el movil al PC
  • Ir a http://appinventor.googlelabs.com/
    • crear un proyecto
    • hacer el ejercicio indicado en http://appinventor.googlelabs.com/learn/setup/hellopurr/hellopurrphonepart1.html
  • Si no aparece el dispositivo, puede ser necesario instalar el driverque va incluido en HTC SYNCH que debe descargarse y ejecutarse
Eclipse
  • Necesitamos Eclipse y el Plugin de Android para Eclipse
  • Tenemos 3 carpetas: Android, Eclipse, Workspace
  • Ejecutar Eclipse/eclipse.bat
  • En Eclipse tendremos 4 pestañas
En Window > Android SDK ... aqui se indican las máquinas virtuales (virtual devices).
  • En Available packages: para instalar la versión para que salga en el combo 'Target'
  • En Virtual devices añadir la máquina (create AVD)
    • nombre
    • target
    • Size de la SD Card
    • Skin
    • hardware
En Window > Preferences

Para crear proyecto: Package explorer > new
  • Hemos creado un proyecto que podemos ver en el Package Explorer
  • properties
    • application name: la que saldrá al descargar hello
    • package name: com.android.exercicis.helloworld2
    • create activity: HelloWorld
    • sdk: 4
  • Editamos HelloWorld.java
  • Compilar (CTRL+F11) = proyecto > boton derecho > run as androi appliction
  • en la carpeta res estan los recursos
    • en drawable > 3 tipos de tamaño de imágenes

Ejemplos

tutoriales
Para una aplicación básica de Hello World hay cuatro ficheros a tocar
  • HelloAndroid.java
  • AndroidManifest.xml
  • res > layout > main.xml
  • res> values > strings.xml




HELLOANDROID.JAVA

package com.examples.helloandroid;


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


public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


TextView tv = new TextView(this);
tv.setText("Hello, nou missatge");
setContentView(tv);
}
}

No hay comentarios:

Publicar un comentario