Sergio Aguado Gonzlez Haga clic para modificar el sergio.aguado@cuatroochenta.com patrn http://www.cuatroochenta.com
1/30/13
ndice
Qu
es Android? Requisitos para programar Estructura de una aplicacin Activities, intents y ciclo de vida
1/30/13
Qu es Android?
Un
sistema operativo basado en Linux para dispositivos mviles Una mquina virtual Java (Dalvik) Un SDK y un framework de aplicacin con diversas libreras:
1/30/13
aplicaciones utilizando su framework de desarrollo Personalizar el sistema operativo o realizar aplicaciones nativas (CyanogenMod)
1/30/13
o C y C+ +!!!
1/30/13
Arquitectura de Android
1/30/13
Arquitectura de Android
Aplicaciones
Todas las aplicaciones tienen los mismos permisos y las mismas restricciones
Framework
de aplicacin
1/30/13
Arquitectura de Android
Libreras
Kernel
1/30/13
Hello Android!!!
1/30/13
Hello Android!!!
1/30/13
Hello Android!!!
1/30/13
AndroidManifest.xml
1/30/13
Activity
Cada
una de las pantallas de una aplicacin Para mostrar componentes visuales se utilizan los layouts
public class HelloActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
1/30/13
Layout
Una
jerarqua de vistas
1/30/13
Layout
Componentes visuales
Label Button Image Date y Time Picker Map WebView
1/30/13
Layout
Contenedores:
LinearLayout TableLayout RelativeLayout TabLayout AbsoluteLayout (NO!!)
1/30/13
Flujo de navegacin
El
flujo de una aplicacin se define como una sucesin de Activities De la misma aplicacin o entre diferentes aplicaciones (colaborar!!!!!!) Las actividades comunican lo que quieren a travs de Intents
1/30/13
Se
compone de:
Accin: Qu se quiere hacer Uri: El dato principal (telfono, id de un contacto) Categora: Informacin adicional de la accin Extras (Bundle): un hash donde incluir ms datos
1/30/13
de acciones:
String uri = "tel:964964964"; Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse(uri)); startActivity(intent);
String asunto = "Asunto"; String texto = "Algo de texto"; Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("plain/text"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"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);
1/30/13
aplicacin puede registrarse mediante filtros a cualquier Intent. No hay aplicacin ms importante que otra
1/30/13
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns: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"> <activity android:name=".HelloActivity android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MailActivity android:label="@string/mail_title"> </activity> <! Otras actividades . . . . . . . . . -- > </application> </manifest>
1/30/13
AndroidManifest.xml
El
paquete de la aplicacin (nombre nico) Componentes de la aplicacin (actividades, servicios, ) Qu Intents pueden pueden gestionar Permisos que necesita la aplicacin para funcionar: acceder a la posicion, utilizar la cmara, recibir smss, Libreras necesarias (p.e. Google Maps)
1/30/13
principal: minimizar consumo de recursos Se divide el flujo de navegacin mediante Activities Las activities:
1/30/13
Activo: Se est ejecutando y est visible en pantalla Pausada: Est todava visible en pantalla pero no tiene el foco Parada: No est visible en pantalla y ya no se est ejecutando
1/30/13
Vida completa
1/30/13
Vida visible
1/30/13
1/30/13
Crear vistas, popular listas. Recuperar estado previo si lo hay onRestart: onStart: onResume: si hay algo parado volverlo a ejecutar. Recuparar onPause: pausar todo aquello que requiera de mucha CPU. Por ejemplo animaciones. Guardar informacin necesaria pues pueden matar el proceso sin previo aviso onStop: onDestroy: 1/30/13
Ejemplo: Una imagen de 200x200 pixels no se ve igual de grande en todos los dispositivos
http://
1/30/13
1/30/13
Independent Pixel: Unidad de pxel virtual para poder definir una interfaz 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_den
1/30/13
trabajar con Absolute Layout Tener recursos para distintas densidades (low, medium, high) Usar dips y nunca pixels
1/30/13