320 likes | 540 Views
Desarrollo con Android. Sergio Aguado González sergio.aguado@cuatroochenta.com http://www.cuatroochenta.com. Índice. ¿Qué es Android ? Requisitos para programar Estructura de una aplicación Activities , intents y ciclo de vida. ¿Qué es Android ?.
E N D
Desarrollo con Android Sergio Aguado González sergio.aguado@cuatroochenta.com http://www.cuatroochenta.com
Índice • ¿Qué es Android? • Requisitos para programar • Estructura de una aplicación • Activities, intents y ciclo de vida
¿Qué es Android? • Un sistema operativo basado en Linux para dispositivos móviles • Una máquina virtual Java (Dalvik) • Un SDK y un framework de aplicación con diversas librerías: • 2D y 3D • SQLite • Media, Bluetooth, Cámara, GPS, brújula, acelerómetro,…
¿Qué se puede hacer con Android? • Programar aplicaciones utilizando su framework de desarrollo • Personalizar el sistema operativo o realizar aplicaciones nativas… (CyanogenMod)
¿Qué se necesita para programar en Android? • Eclipse • Plugin ADT (AndroidDeveloper Tools) • Android SDK • Lenguaje de programación Java http://developer.android.com/sdk/installing.html o C y C++!!!
Arquitectura de Android • Aplicaciones • Todas las aplicaciones tienen los mismos permisos y las mismas restricciones • Framework de aplicación • Infraestructura que ofrece Android para no reinventar la rueda: • Componentes visuales • Gestión del ciclo de vida de la aplicación
Arquitectura de Android • Librerías • Escritas en C y C++. Se acceden a través del framework de aplicación • Kernel
Estructura básica de una aplicación • Activities • Recursos • Layout • Imágenes • Strings • Otros: animaciones, colores, menus, estilo, raw • AndroidManifest.xml
Activity • Cada una de las pantallas de una aplicación • Para mostrarcomponentesvisuales se utilizan los layouts publicclassHelloActivityextends Activity { @Override publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
Layout • Unajerarquía de vistas • Componentesvisuales (View) • Contentedores (ViewGroup)
Layout • Componentesvisuales • Label • Button • Image • Date y Time Picker • Map • WebView
Layout • Contenedores: • LinearLayout • TableLayout • RelativeLayout • TabLayout • AbsoluteLayout (NO!!)
Flujo de navegación • El flujo de unaaplicación se define comounasucesión de Activities • De la mismaaplicación o entre diferentesaplicaciones (colaborar!!!!!!) • Las actividadescomunican lo quequieren a través de Intents
Flujo de navegación. Intent • Descripción de unaacción a realizar • Dos tipos de Intents: • Explícitos: Se indica la actividadconcreta • Implícitos: Se indica lo que se quiere (mostrar un navegador, enviar un correo,…) • Se compone de: • Acción: Qué se quierehacer • Uri: El dato principal (teléfono, id de un contacto) • Categoría: Informaciónadicional de la acción • Extras (Bundle): un hash dondeincluirmásdatos
Flujo de navegación. Intent • Ejemplos de acciones: • ACTION_MAIN • ACTION_VIEW • ACTION_PICK • ACTION_SEND • ACTION_CALL Stringuri = "tel:964964964"; Intentintent = newIntent(Intent.ACTION_CALL); intent.setData(Uri.parse(uri)); startActivity(intent); String asunto = "Asunto"; String texto = "Algo de texto"; IntentemailIntent = newIntent(android.content.Intent.ACTION_SEND); emailIntent.setType("plain/text"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, newString[]{"contacto@decharlas.com"}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, asunto); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, texto); startActivity(Intent.createChooser(emailIntent, "Send your email in:")); //startActivity(emailIntent);
Flujo de navegación. Intent • Unaaplicaciónpuederegistrarsemediantefiltros a cualquier Intent. • No hay aplicaciónmásimportantequeotra
Flujo de navegación. Intent • La activity inicialtambién se inicia con un Intent <?xmlversion="1.0" encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="es.uji.decharlas.android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activityandroid:name=".HelloActivity” android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN" /> <categoryandroid:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activityandroid:name=".MailActivity” android:label="@string/mail_title"> </activity> <!– Otras actividades . . . . . . . . . -- > </application> </manifest>
AndroidManifest.xml • El paquete de la aplicación (nombre único) • Componentes de la aplicación (actividades, servicios, …) • Qué Intents pueden pueden gestionar • Permisos que necesita la aplicación para funcionar: acceder a la posicion, utilizar la cámara, recibir smss,… • Librerías necesarias (p.e. Google Maps)
Ciclo de vida de una actividad • Idea principal: minimizarconsumo de recursos • Se divide el flujo de navegaciónmediante Activities • Las activities: • se inician • se paran • se destruyensiya no se necesitan
Ciclo de vida de una actividad • Básicamente hay tresestados: • Activo: Se estáejecutando y está visible en pantalla • Pausada: Estátodavía visible en pantallapero no tiene el foco • Parada: No está visible en pantalla y ya no se estáejecutando
Ciclo de vida de una actividad Vida completa
Ciclo de vida de una actividad Vida visible
Ciclo de vida de una actividad Vida con foco
Ciclo de vida de una actividad • onCreate: Crear vistas, popular listas. Recuperarestadopreviosi lo hay • onRestart: • onStart: • onResume: si hay algoparadovolverlo a ejecutar. Recuparar • onPause: pausartodoaquelloquerequiera de mucha CPU. Porejemploanimaciones. Guardarinformaciónnecesariapuespuedenmatar el proceso sin previoaviso • onStop: • onDestroy:
Diferentes tamaños de pantalla • Android cuenta con dispositivos con distint@s: • Tamaños de pantalla • Resoluciones de pantalla • Relaciones de aspecto • Densidad de píxels (píxelsporpulgada) Ejemplo: Una imagen de 200x200 pixels no se ve igual de grande en todos los dispositivos http://www.google.com/phone/
Diferentes tamaños de pantalla • Density Independent Pixel: Unidad de píxel “virtual” parapoderdefinirunainterfaz de usuario de forma independiente 1dip = 1 pixel en una pantalla de 160 dpi (punto por pulgada) pixels = dips * (density / 160) http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
Diferentes tamaños de pantalla • No trabajar con Absolute Layout • Tenerrecursosparadistintasdensidades (low, medium, high) • Usar dips y nunca pixels