Introducción al desarrollo Android, Sesión 2
-
Upload
findemor -
Category
Technology
-
view
439 -
download
0
description
Transcript of Introducción al desarrollo Android, Sesión 2
www.solusoft.es
Indice
avanzandoenandroid
Tipos de Aplicaciones
Controles elementales
Controles avanzados
Preferencias
Trabajando en segundo plano
Logs
Demo Google Play
Referencia
www.solusoft.es
¿Dónde se desarrollan?
tiposdeapps
Aplicaciones Nativas
•Pensadas para ejecutarse en una
plataforma específica.
•En Android se desarrollan en Java.
•Se ejecutan de forma eficiente.
•Pueden acceder a todos los
servicios y sensores del dispositivo.
•La aplicación se compila y
distribuye (son muy visibles).
•No requiere conexión a internet.
www.solusoft.es
¿Dónde se desarrollan?
tiposdeapps
Aplicaciones Web Móviles
•Se ejecutan dentro del navegador.
•Son Multiplataforma y reutilizables.
•HTML(5), CSS y Javascript.
•No requieren aprobación.
•El mantenimiento es responsabilidad
nuestra.
•No son eficientes.
•El acceso a recursos del teléfono es
limitado.
•No se distribuyen en el market.
www.solusoft.es
¿Dónde se desarrollan?
tiposdeapps
Aplicaciones Híbridas
•Una parte de la aplicación es
específica de la plataforma, otra es
multiplataforma y reutilizable.
•El desarrollo es algo más
complicado.
•La comunicación con los recursos
del teléfono se realiza mediante
comunicadores.
•No son especialmente eficientes.
•Se distribuyen en el market.
www.solusoft.es
¿Dónde están los datos?
tiposdeapps
Aisladas
Conectadas
Sincronizadas
www.solusoft.es
¿Dónde están los datos?
tiposdeapps
Aplicaciones Aisladas
•Los datos y el procesamiento se
encuentran en el dispositivo.
•No requiere conexión a internet.
•El mantenimiento se centraliza.
•Es más fácil de distribuir.
•La comunicación entre dispositivos
no es posible.
•Padece un alto grado de
fragmentación.
•Es muy difícil migrar a otras
plataformas.
www.solusoft.es
¿Dónde están los datos?
tiposdeapps
Aplicaciones Conectadas
•Los datos y el procesamiento se
alojan en un servicio web.
•Requiere conexión a internet
constante.
•El mantenimiento no es centralizado.
•Su distribución es más compleja.
•Permite comunicación entre
dispositivos.
•Padece un grado medio de
fragmentación.
•Se facilita migrar a otras
plataformas.
www.solusoft.es
¿Dónde están los datos?
tiposdeapps
Aplicaciones Sincronizadas
•Los datos y el procesamiento se
alojan en la web y parte en el
dispositivo.
•Permite su uso sin conexión a
internet.
•Su implementación es más
complicada.
•Los datos no están siempre
actualizados.
•Ventajas y desventajas de ambos
tipos.
www.solusoft.es
usados con frecuencia
controlesbasicos
Controles de Entrada
Eventos relevantes:
•onClick()
•onLongClick()
•onFocusChange()
•onKey()
•onTouch()
Métodos frecuentes:
•getText /getValue
•setText / setValue
•setEnabled
•setVisibility
www.solusoft.es
usados con frecuencia
controlesbasicos
Ejemplo de uso
El botón estará deshabilitado
hasta que la caja de texto
tenga algo escrito.onKey()
setEnabled
onClick()
getText
www.solusoft.es
ListView
controlesavanzados
ListView
•Muestra una lista
desplazable de
elementos.
•Por defecto serán titulo
y descripción.
•Se rellenan utilizando
un Adapter que inyecta
contenidos.
•Admiten mucha
personalización.
www.solusoft.es
ListView
controlesavanzados
Elementos personalizados
•Es frecuente definir el
layout de los
elementos individuales
que se muestran en la
lista.
•Basta con generar un
layout para el elemento y
especificar como se
rellena en el Adapter
correspondiente.
www.solusoft.es
ListView
controlesavanzados
Actividad y Adaptador
•La actividad que
controla la lista debería
extender la clase
ListActivity
•Para representar items
con layouts complejos
hay que implementar un
CustomAdaptater que
controlará como se
muestra cada elemento
www.solusoft.es
ListView Adapter
controlesavanzados
public class ControladorLista extends ListActivity {
/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lista);
// Obtenemos la lista de LibrosArrayList<Libro> Libros = getItems();// Entregamos la lista de Libros al adaptador de la listasetListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));
}
www.solusoft.es
ListView Adapter
controlesavanzados
private class LibroAdapter extends ArrayAdapter<Libro> {
private ArrayList<Libro> items;
public LibroAdapter(Context context, int textViewResourceId, ArrayList<Libro> items) {super(context, textViewResourceId, items);this.items = items;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.lista_item, null);}Libro libro = items.get(position);if (libro != null) {
TextView ttitulo = (TextView) v.findViewById(R.id.titulo);TextView tautor = (TextView) v.findViewById(R.id.autor);if (ttitulo != null) {
ttitulo.setText(libro.getTitulo());}if (tautor != null) {
tautor.setText(libro.getAutor());}
}return v;
}}
www.solusoft.es
ListView Adapter
controlesavanzados
http://blog.findemor.es/2011/02/como-programar-en-android-guia-4/
http://blog.findemor.es/2011/02/como-programar-en-android-guia-3/
Para ver este ejemplo en detalle…
www.solusoft.es
Menu
controlesavanzados
Menú de aplicación
•Aparecen en la zona
inferior al pulsar el
botón de menú
•Pueden definirse por
XML o Runtime
•Es posible agrupar
opciones, establecer
iconos, etc.
•Recomendado para
opciones secundarias
www.solusoft.es
Preferencias
controlesavanzados
Preferencias
•Permiten almacenar
datos
personales, opciones, et
c, de tipo clave-valor.
•No debe sustituir el uso
de SQLite, ficheros, etc.
•Pueden definirse por
XML (DefaultShared) o
Runtime (Shared)
www.solusoft.es
Preferencias
controlesavanzados
Y para leerlas…
Implementar la Activity…
www.solusoft.es
WebViews
controlesavanzados
WebView
•Permiten navegar
•Permiten implementar
aplicaciones Web o
Híbridas
•Pueden manejarse
redirecciones, etc.
•Admite mucha
configuración
•Es muy costoso en
rendimiento
www.solusoft.es
Trabajando en segundo plano
segundoplano
UI
Thread
Alarm
Broadcast
Service
www.solusoft.es
UI
segundoplano
UI thread – Main thread
•Es el hilo principal de la app.
•Lo crea el sistema cuando se
ejecuta la aplicación.
•Ejecuta la parte gráfica.
•Nunca debe bloquearse con
operaciones no instantáneas.
•Accede a Android UI toolkit
www.solusoft.es
Threads
segundoplano
Worker threads - AsyncTasks
•Hilos secundarios y tareas
asíncronas.
•Lo crea el hilo principal cuando
necesita realizar tareas no
instantáneas.
•Ningún hilo secundario debe
acceder a la Android UI toolkit.
•Podemos bloquear la interfaz
usando un
www.solusoft.es
Alarms
segundoplano
AlarmManager
•Es un hilo secundario.
•La aplicación configura y registra
su disparador en el
AlarmManager.
•Permite programar tareas en el
futuro o ejecutar aplicaciones.
•Se mantiene si el sistema entra
en reposo.
•Se eliminan si el sistema se
apaga o reinicia.
•¡Es más eficiente que un Worker
Thread!.
www.solusoft.es
Broadcast
segundoplano
BroadcastReceiver
•Es un hilo secundario.
•El sistema los ejecuta cuando se
genera un mensaje Broadcast.
•Permite detectar eventos del
sistema y desencadenar tareas.
•La aplicación también puede
emitir mensajes Broadcast.
•LocalBroadcastManager es más
eficiente y seguro, pero es de
ámbito local.
www.solusoft.es
Services
segundoplano
Services
•Es una aplicación en sí mismo,
sin interfaz de usuario.
•Los ejecuta algún componente
(como una actividad) llamando a
startService().
•Se ejecuta indefinidamente.
•Admite Bound de otros
componentes para ofrecer una
interfaz cliente-servidor.
•Puede generar hilos a su vez.
•Al tratarse de un componente:
deben declararse en el Manifest.
www.solusoft.es
LOGs para depurar
dudaspendientes
Logcat Almacenamiento
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Permiso necesario
www.solusoft.es
En caso de duda…
algunasreferencias
http://developer.android.com/guide
Guías de uso del API
Entrenamiento y ejemplos
http://developer.android.com/trainingReferencias API
http://developer.android.com/reference
http://developer.android.com/tools/index.html
Instalar el SDK
https://github.com/findemor/FormacionAndroidEjemplosRepositorio DEMO
http://bit.ly/soluAndroid2Estas diapositivas
http://blog.findemor.es/category/android/Guías en mi blog
www.solusoft.es
Es hora de jugar
playtime
Tag V1 Ejercicio propuesto
Servicio en segundo plano que almacena posiciones, que serán mostradas en una lista y se verán en un mapa al seleccionar una.
Fecha corrección: 30/11/2012
www.solusoft.es
En caso de duda consulte a su farmacéutico
contactme
Manuel J. García
Técnico de Innovación
en solusoft
@findemor
Foro de Imagineware
http://foro.imagineware.info