Post on 20-May-2015
Análisis y Diseño de Software
Departamento de Ingeniería de Sistemas Telemáticoshttp://moodle.dit.upm.es
Preferencias
Carlos A. Iglesias <cif@gsi.dit.upm.es>
v1.0 22/04/2013
Preferencias 2
Temario● 4.1 Introducción a Android ● 4.2 Introducción Desarrollo con Android
● 4.3 Ejemplo Desarrollo y Depuración ● 4.4 Actividades● 4.5 Interfaces de Usuario
● 4.6 Intenciones● 4.7 Acceso a Datos● 4.8 Preferencias● 4.9 Hebras e internacionalización
Preferencias 3
Teoría
Ejercicio práctico en el ordenador
Ampliación de conocimientos
Lectura / Vídeo / Podcast
Práctica libre / Experimentación
Leyenda
Preferencias 4
● Android Developers
Bibliografía
http://developer.android.com/training/basics/data-storage/shared-preferences.htmlhttp://developer.android.com/guide/topics/data/data-storage.html#pref
http://developer.android.com/guide/topics/ui/settings.html
Preferencias 5
Objetivos
● Aprender a hacer aplicaciones que tienen configuración de los usuarios
● Aprender el uso de preferencias
Preferencias 6
Motivación
● Es deseable que el usuario pueda modificar algunos valores de la aplicación
● P.ej.– Usuario / contraseña– Color de la pantalla, estilo– Funcionamiento (orden en que se muestra, ...)
Preferencias 7
Persistencia en Android
● Android nos ofrece varias alternativas de almacenamiento persistente:– Bases de datos – Pares atributos valor (preferencias) (este tema)– Sistema de ficheros (interno o externo en SD)– Conexión de red para almacenar datos de
forma remota
Preferencias 8
Almacenamiento de datos
● En Android, todos los datos de la aplicación (incluyendo ficheros) son PRIVADOS para esa aplicación
● La forma estándar de acceder a los datos son los ContentProvider, de los cuales hay componentes estándar para acceder a ficheros multimedia, contactos, etc.
Preferencias 9
Preferencias
● Las preferencias son un mecanismo ligero para guardar pares clave-valor de tipos primitivos en Mapas
● La clave es un String y el valor un tipo primitivo
● Las preferencias son similares a los Bundles que usábamos en las Intenciones, pero las preferencias son persistentes
Preferencias 10
API de Preferencias
● Obtener objeto SharedPreferences – getSharedPreferences() - si tenemos múltiples
ficheros de preferencias, debemos indicar el nombre del fichero
– getPreferences() - si sólo tenemos 1 fichero de preferencias
Preferencias 11
Leer Preferencias
● En el objeto SharedPreferences, usar– getBoolean()– getString()– getInt()– getFloat()– getLong()
Preferencias 12
Escribir Preferencias
● Tenemos dos opciones– Usar una Actividad que extiende
PreferenceActivity (y guarda ella ya los valores)– Guardarlo a mano
• Obtener un objeto SharedPreferences.Editor con el método edit()
• Escribir en el objeto Editor– putBoolean, putString(), putFloat(), putInt(), putLong– remove(String key)– clear() (borrar todas las claves)
• Persistir cambios en Editor con commit()
Preferencias 13
Mostrar Preferencias
● Debemos crear una Actividad que extiende PreferenceActivity
● El fichero XML de preferencias debe ser un PreferenceScreen. Dentro indicamos el tipo de preferencias– CheckBoxPreference– ListPreference– EditTextPreference
Preferencias 14
Ejemplo EjemploPreferencias
Preferencias 15
EjemploPreferencias
Preferencias 16
EjemploPreferencias
Preferencias 17
Recurso mis_preferencias.xml
● Proyecto o fichero New->Android XML File
Preferencias 18
Preferencias
Nombre variable
Texto para el usuario
Ayuda para que lo rellene
Preferencias 19
Vista xml
Preferencias 20
Lista de valores
● En res/values y usando string-array
Preferencias 21
PreferenciasActivity
● Crea el menú de preferencias, lo rellena a partir de los valores guardados y lo almacena cuando damos atrás
Preferencias 22
MainActivity (I)
Preferencias 23
MainActivity (II)
Preferencias 24
MainActivity (III)
Preferencias 25
MainActivity (IV)
Preferencias 26
MainActivity (V)
Preferencias 27
Resumen
● Las preferencias de Android son un ejemplo de Diccionario para guardar pares clave-valor
● Las preferencias permiten guardar tipos primitivos
● Podemos gestionar preferencias con PreferenceActivity
Preferencias 28
¿Preguntas?