Píldoras android i. Intro - 2ª parte

Post on 13-Jun-2015

7.166 views 0 download

description

2ª parte de la introducción al desarrollo para Android.Es una pequeña introducción a las acitvites, los intents y los Recursos del sistema

Transcript of Píldoras android i. Intro - 2ª parte

Píldoras Android I Introducción – 2ª parteSergi Martí nez

OverviewBloques básicos de una aplicación de Android

Activity

Intents

El Manifest

Recursos

Bloques básicos de una aplicaciónActivities

• Son los encargados de mostrar la interfaz y gestionar sus eventosServices

• Se ejecutan en backgroundBroadcast Receivers

• Responden ante sucesos del sistemaContent Providers

• Almacenan información y la ponen a disposición de otras apps

Activity«…si hay que mostrarlo, se muestra, pero mostrarlo pa ná, es tontería»

ActivitiesUna Activity es una pantalla de la interfaz

Las aplicaciones constan de una o más Activity

Cada Activity es reponsable de guardar su estado

Una Activity se encarga de:• Crear una ventana donde colocar la interfaz • Gestionar la interfaz• Responder a los eventos (onClick, onLongClick, etc).

Una Activity básica

Estados de una actividadEl sistema gestiona las actividades como una pila

Una actividad tiene cuatro estados:• Activa: la actividad está en primer plano y tiene el focus (enfoque

de usuario). Se encuentra en lo alto de la pila.• En pausa: la actividad es visible, pero no tiene el focus. Ej: hay un

diálogo sobre ella con el focus retenido.• Detenida: La actividad está tapada por otra aplicación. Mantiene

sus datos.• Destruida: Una actividad detenida ha sido destruida para liberar

memoria y ha perdido sus datos. Hay que recrearla completamente.

Ciclo de vida de una actividad

MétodosMétodo Descripción Siguiente

onCreate() Donde se crea la interfaz. Se le proporciona un bundle con su estado anterior.

onStart

onRestart() Justo antes de un onStart cuando venimos de onStop onStart

onStart() La actividad se hace visible al usuario onResumeonStop

onResume() La actividad está en primer plano interactuando con el usuario

onPause

onPause La actividad va a ser detenida. Se utiliza para guardar información

onResumeonStop

onStop La actividad ya no es visible al usuario. onRestartonDestroy

onDestroy Última llamada antes de que la actividad sea destruida. El método isFinishing() nos ayuda a saber si es final o temporal

Iniciar otra ActivityUso del método startActivity(Intent) o startActivityForResult (Intent, int)

Podemos pasar parametros con Intent.putExtra(int, <type>)

Recibirlos con getIntent().getExtras().get<Type>(clave);

Devolver valores de una ActivityEstablecemos el valor a devolver con setResult(int resultCode) o setResult (int resultCode, Intent data)

La actividad «llamadora» implementa el método onActivityResult(int requestCode, int resultCode, Intent data)

resultCode puede ser uno de estos valores:• RESULT_CANCELED• RESULT_OK• RESULT_FIRST_USER

Intent«… Trata de arrancarlo, Carlos, por tu…»

IntentsAndroid se basa en multitud de pequeños componentes

Estos componentes se comunican via Intents

Mensajes utilizados para notificar a las aplicaciones de eventos• Cambios de Hardware. Ej: tarjeta SD insertada.• Recepción de datos. Ej: llegada de un sms• Eventos de la apliación. Ej: se ha lanzado la aplicación• Etc

Es posible crear nuestros propio intents

Partes de un IntentPartes básicas

• La acción: una constante que indica la acción que se lanza. Ej.: VIEW_ACTION, EDIT_ACTION

• Los datos: uri indicando el recurso asociado. Ej.: content://contacts/people/1

Partes opcionales• Una categoría: agrupa el tipo de Intent• Un tipo MIME: indica el tipo de recurso si no concemos una uri• Un componente: la clase que debe tener el receptor. Obvia las

otras propiedades, pero es más frágil.• Extras: un Bundle con información extra que el receptor va a

necesitar

Ejemplos de IntentANSWER_ACTION

CALL_ACTION

DELETE_ACTION

DIAL_ACTION

EDIT_ACTION

FACTORY_TEST_ACTION

GET_CONTENT_ACTION

INSERT_ACTION

MAIN_ACTION: Inicio de aplicación

PICK_ACTION: permitir a otras apps elegir contenido de la tuya

VIEW_CONTENT: para ver contenido

EDIT_CONTENT: para editar contenido

Categorias de IntentALTERNATIVE_CATEGORY

BROWSABLE_CATEGORY

DEFAULT_CATEGORY

GADGET_CATEGORY

HOME_CATEGORY

LAUNCHER_CATEGORY

PREFERENCE_CATEGORY

SELECTED_ALTERNATIVE_CATEGORY

TAB_CATEGORY

TEST_CATEGORY

Llegando a la actividad adecuadaUna actividad debe cumplir tres reglas para responder un Intent

• La actividad debe soportar la acción especificada• La actividad debe soportar el tipo MIME si lo hay• La actividad debe soportar TODAS las categorias nombradas en el

Intent

Uso de Intent-Filter en el manifest

Ejemplo

Manifest.xml«…un xml para atarlos a todos en las sombras…»

ManifestEl Manifest es el archivo donde la aplicación le dice al sistema que elementos requiere para funcionar

Siempre debe llamarse AndroidManifest.xml y estar en la raiz del proyecto

Entre otras cosas contiene:• Atributos de la aplicación y metadatos• La declaración de actividades y otros componentes• Librerías externas• Permisos

Se puede editar via GUI o editando el XML

Manifest inicial

Versión de la aplicaciónVersionCode es importante para el Market

VersionName es importante para el usuario y/o nosotros

Definición de la actividadDefinimos las actividades y sus intent-filter

Versión del SDKminSdkVersion, maxSdkVersion y targetSdkVersion

Permisos de la aplicación

Avisan al usuario de las acciones que realizará la apliación

Listados en: http://developer.android.com/reference/android/Manifest.permission.html

Recursos«…¡Adelante gadget-o-Layout!…»

RecursosUn recurso es un elemento a utilizar durante la ejecución de la aplicación

Existen diferentes tipos de recursos:• Layouts• Imágenes• Cadenas de texto• Sonidos• Colores• Temas• Animaciones• etc

RecursosSe almacenan en la carpeta resources

Cada tipo de recurso tiene va en una carpeta específica

Utilizan sufijos para determinar que recursos utlizar según contexto (tamaño de pantalla, idioma, orientación, etc.)

Nombre en mínusculas

La extensión se ignora (mismo nombre, diferente extensión se considera duplicado)

La clase RLa clase R es generada y mantenida por el sistema y no debe ser modificada

Contiene un identificador (int) único por cada recurso

Podemos hacer referencia a un recurso en código por R.<tipo>.<nombre>. Ej.: R.layout.main

Nombrar recursos en XMLPara referirnos a un recurso utilizamos la siguiente sintaxis:

@<tipo de recurso>/<nombre del recurso>

Por ejemplo

@string/app_name

Para definir un nombre utilizamos:

@+<tipo de recurso>/<nombre de recurso>

Ejemplo

Fin¿Hay preguntas? ¿no? Pues vamos a comer

sergi@catdroid.org

sergi.martinez@gmail.com

www.sergiandreplace.com

@sergiandreplace