- 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.
- 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
- Todas heredan de la clase view
- Tienen elementos comunes como onclick
- La clase ViewGroup sirve para haver vistas compuestas
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)
- 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:
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...)
- se usan principalmente para moverse entre actividades
- explícita
- implícita, definiendo intentos predefinidos
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
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
- es un area rectangular
- heredan de android.view.View
- ejemplos: TextView, EditText, Button, RadioButton, CheckBox, DatePicker, TimePicker
- 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
- Procedural
tv.SetWidth(100)
- Declarativa: como xml (Se recomienda programar por capas, usando MVC)
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
Layout
- Contenedor de un ViewGroup
- 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
- 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
- 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
- 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 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
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
- http://developer.android.com/resources/browser.html?tag=tutorial
- http://developer.android.com/guide/tutorials/hello-world.html
- 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