El gran libro de Android
Jesús Tomás Gironés
El gran libro de Android
Cuarta edición, 2015
© 2015 Jesús Tomás Gironés
© MARCOMBO, S.A. 2015
Gran Vía de les Corts Catalanes, 594
08007 Barcelona
www.marcombo.com
Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra.
Para Bea, con amor y gratitud.
Mis agradecimientos a Carsten Vogt por su gran trabajo en la revisión de este libro y a todos los alumnos y lectores que con sus sugerencias y correcciones han ayudado a mejorarlo.
Lista de siglas y acrónimos
¿Cómo leer este libro?
CAPÍTULO 1. Visión general y entorno de desarrollo
1.1. ¿Qué hace que Android sea especial?
1.2. Los orígenes
1.3. Comparativa con otras plataformas
1.4. Arquitectura de Android
1.4.1. El núcleo Linux
1.4.2. Runtime de Android
1.4.3. Librerías nativas
1.4.4. Entorno de aplicación
1.4.5. Aplicaciones
1.5. Instalación del entorno de desarrollo
1.5.1. Instalación de la máquina virtual Java
1.5.2. Instalación de ADT Bundle
1.5.3. Instalación de Android Studio
1.5.4. Instalación de los componentes por separado
1.5.5. Creación de un dispositivo virtual Android (AVD)
1.6. Las versiones de Android y niveles de API
1.6.1. Las primeras versiones
1.6.2. Cupcake
1.6.3. Donut
1.6.4. Éclair
1.6.5. Froyo
1.6.6. Gingerbread
1.6.7. Honeycomb
1.6.8. Ice Cream Sandwich
1.6.9. Jelly Bean
1.6.10. KitKat
1.6.11. Android L Preview
1.6.12. Elección de la plataforma de desarrollo
1.6.13. Las librerías de compatibilidad (support library)
1.7. Creación de un primer programa
1.8. Ejecución del programa
1.8.1. Ejecución en el emulador
1.8.2. Ejecución en un terminal real
1.9. Ficheros y carpetas de un proyecto Android
1.10. Componentes de una aplicación
1.10.1. Vista (View)
1.10.2. Layout
1.10.3. Actividad (Activity)
1.10.4. Servicio (Service)
1.10.5. Intención (Intent)
1.10.6. Fragment
1.10.7. Receptor de anuncios (Broadcast Receiver)
1.10.8. Proveedores de contenido (Content Provider)
1.11. Documentación y ApiDemos
1.11.1. Dónde encontrar documentación
1.11.2. La aplicación ApiDemos
1.12. Depurar
1.12.1. Depurar con Eclipse
1.12.2. Depurar con mensajes Log
1.13. Repaso de Java y la aplicación Mis Lugares
1.13.1. La clase Lugar
1.13.2. Tipos enumerados en Java
1.13.3. Las colecciones en Java
CAPÍTULO 2. Diseño de la interfaz de usuario: vistas y layouts
2.1. Creación de una interfaz de usuario por código
2.2. Creación de una interfaz de usuario usando XML
2.2.1. Edición visual de las vistas
2.2.2. Los atributos de las vistas
2.3. Layouts
2.4. Una aplicación de ejemplo: Asteroides
2.5. La aplicación: Mis Lugares
2.6. Recursos alternativos
2.7. Tipos de recursos y recursos del sistema
2.7.1. Tipos de recursos
2.7.2. Acceso a los recursos
2.7.3. Recursos del sistema
2.8. Estilos y temas
2.8.1. Los estilos
Heredar de un estilo propio
2.8.2. Los temas
2.9. Uso práctico de vistas y layouts
2.9.1. Acceder y modificar las propiedades de las vistas por código
2.10. Uso de tabs (pestañas)
CAPÍTULO 3. Actividades e intenciones
3.1. Creación de nuevas actividades
3.2. Comunicación entre actividades
3.3. Añadiendo un menú a una actividad
3.4. La barra de acciones (ActionBar)
3.5. Creando actividades en Mis Lugares
3.5.1. Creando la actividad VistaLugar de Mis Lugares
3.5.2. Creando la actividad EdicionLugar de Mis Lugares
3.6. Creación y uso de iconos
3.7. Añadiendo preferencias de usuario
3.7.1. Organizando preferencias
3.7.2. Cómo se almacenan las preferencias de usuario
3.7.3. Accediendo a los valores de las preferencias
3.8. Añadiendo una lista de puntaciones en Asteroides
3.9. La vista ListView
3.9.1. Un ListView que visualiza una lista de strings
3.9.2. Un ListView que visualiza layouts personalizados
3.9.3. Un ListView con nuestro propio adaptador
3.9.4. Detectar una pulsación sobre un elemento de la lista
3.10. Las intenciones
3.10.1. Añadiendo fotografías en Mis Lugares
3.10.2. La etiqueta
CAPÍTULO 4. Gráficos en Android
4.1. Clases para gráficos en Android
4.1.1. Canvas
4.1.2. Paint
Definición de colores
4.1.3. Path
4.1.4. Drawable
BitmapDrawable
GradientDrawable
TransitionDrawable
ShapeDrawable
AnimationDrawable
4.2. Creación de una vista en un fichero independiente
4.3. Creando la actividad principal de Asteroides
4.3.1. La clase Gráfico
4.3.2. La clase VistaJuego
4.3.3. Introduciendo la nave en VistaJuego
4.4. Representación de gráficos vectoriales en Asteroides
4.5. Animaciones
4.5.1. Animaciones de vistas
4.5.2. Animaciones de propiedades
CAPÍTULO 5. Hilos de ejecución, pantalla táctil y sensores
5.1. Uso de hilos de ejecución (threads)
5.1.1. Introducción a los procesos e hilos de ejecución
5.1.2. Hilos de ejecución en Android
5.1.3. Creación de nuevos hilos con la clase Thread
5.1.4. Introduciendo movimiento en Asteroides
5.1.5. Ejecutar una tarea en un nuevo hilo con AsyncTask
5.1.6. Mostrar un cuadro de progreso en un AsyncTask
5.1.7. El método get() de AsyncTask
5.2. Manejando eventos de usuario
5.2.1. Escuchador de eventos de la clase View
5.2.2. Manejadores de eventos
5.3. El teclado
5.4. La pantalla táctil
5.4.1. Manejo de la pantalla táctil multi-touch
5.4.2. Manejo de la nave con la pantalla táctil
5.5. Gestures
5.5.1. Creación y uso de una librería de gestures
5.5.2. Añadiendo gestures a Asteroides
5.6. Los sensores
5.6.1. Un programa que muestra los sensores disponibles y sus valores en tiempo real
5.6.2. Utilización de los sensores en Asteroides
5.7. Introduciendo un misil en Asteroides
CAPÍTULO 6. Multimedia y ciclo de vida de una actividad
6.1. Ciclo de vida de una actividad
6.1.1. ¿Qué proceso se elimina?
6.1.2. Guardando el estado de una actividad
6.2. Utilizando multimedia en Android
6.3. La vista VideoView
6.4. La clase MediaPlayer
6.4.1. Reproducción de audio con MediaPlayer
6.5. Un reproductor multimedia paso a paso
6.6. Introduciendo efectos de audio con SoundPool
6.7. Grabación de audio
CAPÍTULO 7. Seguridad y posicionamiento
7.1. Los tres pilares de la seguridad en Android
7.1.1. Usuario Linux y acceso a ficheros
7.1.2. El esquema de permisos en Android
7.1.3. Permisos definidos por el programador en Android
7.2. Localización
7.2.1. Sistemas de geolocalización en dispositivos móviles
7.2.2. La API de localización de Android
7.2.3. Emulación del GPS con Eclipse
7.2.4. Estrategias para escoger un proveedor de localización
7.3. Google Maps (API v2)
7.3.1. Obtención de una clave Google Maps
7.4. Fragmentando los asteroides
Читать дальше