La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción al desarrollo de aplicaciones en Android.

Presentaciones similares


Presentación del tema: "Introducción al desarrollo de aplicaciones en Android."— Transcripción de la presentación:

1 Introducción al desarrollo de aplicaciones en Android

2 Temario 1.Introducción 2.El SDK 3.Hello World 4.El ciclo de vida 5.Recursos 6.Layouts y Views 7.Interacción con el usuario 8.Menús 9.Preferencias 10.Intents 11.Depuración 12.El Market

3 1. Introducción a Android

4 Introducción Smartphones Android en cifras Historia de Android Funcionamento interno

5 Smartphones Teléfono Rádio MP3 GPS Cámera Internet Apps

6 Android en cifras #1 en activaciones (350.000 al día) 23% de la cuota de mercado (finales 2010) 250.000+ apps en el market 100+ modelos de teléfono 40+ modelos de tablet

7 Android en cifras (cont.) Mòbils al món, segons Gartner (Abril 2011)

8 Android en cifras (cont.)

9 ¿Qué es Android? Conjunto de software para dispositivos móviles que incluye: Sistema operativo Middleware Aplicaciones Open source Impulsado por Google Basado en Linux y Java

10 Historia Julio 2005: Google compra Android Inc. Noviembre 2007: Nace la OHA Febrero 2009: Release de 1.1 Abril 2009: Release de 1.5 (Cupcake) Octubre 2009: Release de 2.0 (Eclair) Deciembre 2010: Release de 2.3 (Gingerbread)

11 Versiones API level 3 (Cupcake) 7 (Eclair) 9 (Gingerbread)

12 Características Sistema base es Linux Máquina virtual Dalvik Librerías de sistema WebKit SQLite Media codecs Comunicaciones (GSM, bluetooth, wifi) Cámara, GPS, sensores Application framework

13 Arquitectura

14 Aplicaciones Java (.apk) Se ejecutan en un espacio aislado (instancia de Dalvik) No hay jerarquía Se comunican a través de Intents El market no es imprescindible

15 Más información Web oficial Android http://www.android.com/ http://developer.android.com/index.html Wikipedia http://es.wikipedia.org/wiki/Android CatDroid http://catdroid.org/

16 2. El entorno de desarrollo

17 Elementos necesarios Eclipse Android SDK Eclipse ADT plugin + ADV Manager

18 Instalación 1.Preparar el equipo (Instalar Eclipse) 2.Descargar el SDK 3.Instalar el plugin ADT para Eclipse 4.Instalar plataformas y APIs http://developer.android.com/sdk/installing.html

19 Catclipse Descargar y abrir Ultimo update: Bolets Barruers Disponible para Windows y Mac, próximamente para Linux

20 3. Hola mundo

21 Creación de un nuevo proyecto

22 Elementos del proyecto nuevo Activity Manifest Resources

23 Activities Una 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).

24 Una Activity básica

25 Manifest El 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 raíz 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

26 Manifest inicial

27 Versión de la aplicación VersionCode es importante para el Market VersionName es importante para el usuario y/o nosotros

28 Definición de la actividad Definimos las actividades y sus intent-filter

29 Versión del SDK minSdkVersion, maxSdkVersion y targetSdkVersion

30 Permisos de la aplicación Avisan al usuario de las acciones que realizará la aplicación Listados en: http://developer.android.com/reference/android/Manifest.permission.html http://developer.android.com/reference/android/Manifest.permission.html

31 Recursos Un 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

32 Recursos Se almacenan en la carpeta resources Cada tipo de recurso tiene va en una carpeta específica Utilizan sufijos para determinar que recursos utilizar 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)

33 La clase R La 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... Ej.: R.layout.main

34 Nombrar recursos en XML Para referirnos a un recurso utilizamos la siguiente sintaxis: @ / Por ejemplo @string/app_name Para definir un nombre utilizamos: @+ /

35 Ejemplo

36 4. El ciclo de vida

37 Estados de una actividad El 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.

38 Ciclo de vida de una actividad

39 Métodos MétodoDescripciónSiguiente 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 onStoponStart onStart()La actividad se hace visible al usuarioonResume onStop onResume()La actividad está en primer plano interactuando con el usuario onPause La actividad va a ser detenida. Se utiliza para guardar información onResume onStop La actividad ya no es visible al usuario.onRestart onDestroy Última llamada antes de que la actividad sea destruida. El método isFinishing() nos ayuda a saber si es final o temporal

40 Otro grafo

41 Ejercicio (I) Clase android.util.Log Log. (String tag, String message) Métodos: e – error d – debug i – info v – verbose w – warning private static final String TAG = "MyActivity"; Log.v(TAG, "index=" + i);

42 Ejercicio(II) @Override… protected void onDestroy() protected void onPause() protected void onRestart() protected void onResume() protected void onStart() protected void onStop()

43 5. Recursos

44 Imágenes Carpeta drawables Tres tamaños: ldpi, mdpi, hdpi Tamañoldpimdpihdpi Relación0.7511.5 Launcher36x36 px48x48 px72x72 px Menu36x36 px48x48 px72x72 px Status Bar (<=2.2)19x19 px25x25 px38x38 px Status Bar (>=2.3)12x19 px16x25 px24x38 px Tab24x24 px32x32 px48x48 px

45 Iconos Simplificados Realísta pero no fotorealista Imágen frontal Iluminación superior

46 Formatos de imágen Recomendación: PNG-24 para imágenes con transparencias JPG para imágenes sin transparencias

47 Archivos de cadenas cadena ….

48 Arrays de cadenas @string/SearchTimeFrameAll @string/SearchTimeFrame24h @string/SearchTimeFrame48h @string/SearchTimeFrameWeek …

49 Colores Format: #rgb | #rrggbb | #rrggbbaa #FFF #000 #eb5200 #fff #444

50 Uso de recursos desde código El objeto R.tipo.id siempre devuelve un entero Para recuperar el recurso en cuestión utilizamos: getResources().get (Integer id) O getResources().getIdentifier(String nombre, String tipo)

51 7. Interacción con el usuario

52 Eventos Los layouts generan eventos de tipo onAcción Los eventos son acciones que interrumpen el flujo del código Se generan a partir de acciones externas Para implementar un método onAcción una clase debe implementar la interfaz onAcciónListener Para adjudicar la clase que implmementa el «escuchador» utilizamos el método setOnAcciónListener de la vista

53 Ejemplo con dos clases public class alHacerClick implements OnClickListener { @Override public void onClick(View v){ v.setText("Click aqui!"); }... public class Main extends Activity {... boton.setOnClickListener(new alHacerClick());... }

54 Ejemplo con la actividad public class Main extends Activity implements OnClickListener { @Override public void onClick(View v){ v.setText("Click aqui!"); }... boton.setOnClickListener(this);... }

55 Múltiples eventos en la misma clase Si tenemos a nuestra clase escuchando más de un evento OnClick, el parametro v nos permite averiguar que view ha disparado el evento. Podemos comparar v.getId() con un recurso R.id @Override public void onClick(View v){ switch(v) { case R.id.btnOk: … case R.id.btnCancel: … } (v.getId()==R.Id.btnOk)

56 Un brindis con el usuario La clase toast permite lanzar mensajes rápidos Toast.makeText(Context context, int resId, int duration) Toast makeText(Context context, CharSequence text, int duration) Duration: Toast. LENGTH_LONG | Toast.LENGTH_SHORT

57 Diálogos. setButtons AlertDialog: puede gestionar entre 0 y 3 respuestas AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MyActivity.this.finish(); } }).setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create();

58 Diálogos. Una lista. final CharSequence[] items = {"Red", "Green", "Blue"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Pick a color"); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create();

59 Diálogos. Checkboxes final CharSequence[] items = {"Red", "Green", "Blue"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Pick a color"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create();

60 Crear un diálogo personalizado Hemos creado el layout custom_dialog Context mContext = getApplicationContext(); Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Custom Dialog"); TextView text = (TextView) dialog.findViewById(R.id.text); text.setText("Hello, this is a custom dialog!"); ImageView image = (ImageView) dialog.findViewById(R.id.image); image.setImageResource(R.drawable.android); dialog.show();

61 Menús

62 Menús. Archivos de menú … <item android:id="@+id/settings" android:title="@string/settings_label" android:alphabeticShortcut="@string/settings_shortcut" /> …

63 Abrir el menú Sobrecargamos el método onCreateOptionsMenu public boolean onCreateOptionsMenu(Menu menu) Llamamos a GetMenuInflater MenuInflater inflater = getMenuInflater(); Llamamos al método inflate del MenuInflater MenuInflater inflater = getMenuInflater();

64 Procesar las opciones de menú Sobrecargamos el método onOptionsItemSelected @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.settings:... }

65 9. Preferencias

66 Archivos de preferencias Layout especializado que permite crear pantallas de configuración de forma rápida. <CheckBoxPreference android:key="music" android:title="@string/music_title" android:summary="@string/music_summary" android:defaultValue="true" /> <CheckBoxPreference android:key="hints" android:title="@string/hints_title" android:summary="@string/hints_summary" android:defaultValue="true"/>

67 Mostrar archivo de preferencias public class Prefs extends PreferenceActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); } En el manifest:

68 Leer y escribir preferencias PreferenceManager.getDefaultSharedPreferences(context)…. getTipo(Nombre, Predeterminado); setTipo(Nombre, Predeterminado);

69 Gestionar opciones @Override public boolean onPreferenceClick(Preference preference){ if (preference.getKey() == "About"){ Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.about); dialog.setTitle(getResources().getString(R.string.OptionAbout)); dialog.setCancelable(true); dialog.show(); } if (preference.getKey() == "DoLogin"){ findPreference("User").setEnabled( PreferenceManager.getDefaultSharedPreferences(this).getBoolean("DoLogin", false)); indPreference("Password").setEnabled( PreferenceManager.getDefaultSharedPreferences(this).getBoolean("DoLogin", false)); } return false; }

70 10. Intents

71 Intents Android 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

72 Partes de un Intent Partes 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

73 Ejemplos de Intent ANSWER_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

74 Categorias de Intent ALTERNATIVE_CATEGORY BROWSABLE_CATEGORY DEFAULT_CATEGORY GADGET_CATEGORY HOME_CATEGORY LAUNCHER_CATEGORY PREFERENCE_CATEGORY SELECTED_ALTERNATIVE_CATEGORY TAB_CATEGORY TEST_CATEGORY

75 Llegando a la actividad adecuada Una 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

76 Ejemplo

77 Iniciar otra Activity Uso del método startActivity(Intent) o startActivityForResult (Intent, int) Podemos pasar parametros con Intent.putExtra(int, ) Recibirlos con getIntent().getExtras().get (clave);

78 Devolver valores de una Activity Establecemos 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


Descargar ppt "Introducción al desarrollo de aplicaciones en Android."

Presentaciones similares


Anuncios Google