SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Análisis y Diseño
      de Software

Interfaces de Usuario
La aplicación Yamba

      Carlos A. Iglesias <cif@gsi.dit.upm.es>


     Departamento de Ingeniería de Sistemas Telemáticos
                                 http://moodle.dit.upm.es
Leyenda
Teoría


Ejercicio práctico en el ordenador


Ampliación de conocimientos


Lectura / Vídeo / Podcast


Práctica libre / Experimentación



                    Interfaces de Usuario   2
Temario
● 4.1   Introducción a Android [Gar10, cap1-2 ]
● 4.2   Desarrollo con Android [Gar10, cap3-5]
● 4.3   Interfaces de Usuario [Gar10, cap6]
 –  4.3.1 Ejemplo SobreTeleco
  – 4.3.2 Layouts y Views
  – 4.3.3 Widgets y Trazas. Interfaz del proyecto Yamba
  – 4.3.4 Hebras e Internacionalización. Interfaz Yamba
● 4.4 Intenciones y Servicios [Gar10, cap7-8]
● 4.5 Acceso   a Datos [Gar10, cap9]

                                Interfaces de Usuario     3
Bibliografía
●   Libro de texto:
    –   [Gar10] Learning Android, Marko Gargenta,
        O'Reilly, 2010. Disponible en
        http://ofps.oreilly.com/titles/9781449390501/
    –   Capítulos 7
    –   http://www.youtube.com/watch?v=SW82-YOOMIs
●   Android Developers
    –   http://developer.android.com/guide/topics/fundamentals.html
    –   http://developer.android.com/guide/topics/ui/index.html


                                      Interfaces de Usuario           4
Objetivos
● Ver un ejemplo más complejo de interfaces
 de usuario
● Aprender más detalles de algunos widgets
 (TextView, Button, EditText)
● Aprender a depurar con trazas




                       Interfaces de Usuario   5
La aplicación Yamba
●    Vamos a hacer una aplicación sencilla que
    tuitea




                          Interfaces de Usuario   6
Mensajes publicados
●Puedes  publicar tus mensajes en twitter o
 en marakana (yamba.markana.com),
 créate una cuenta.




                        Interfaces de Usuario   7
Comenzamos Yamba v1 (I)
● Puedes crearlo o partir del proyecto
 Yamba-ADSW
● Crear proyecto Android
    –   Seleccionar Android 2.3.3
    –   Seleccionar paquete com.marakana.yamba
    –   Actividad: StatusActivity0
●   Copia los recursos de resYamba.zip (icono
    de la aplicación y el fondo)

                            Interfaces de Usuario   8
Otros cambios
●   StatusActivity0.java



●res/values/strings.xml




                           Interfaces de Usuario   9
Ejecutar
●   Compila y se ejecuta, pero no hace nada...
●   Vamos a extender StatusActivity0.java
    –   Programación programática




                             Interfaces de Usuario   10
Modificando una actividad
●   En Android, no podemos cambiar el estado
    de una Actividad
●   Pero sí podemos indicar al ActivityManager
    qué debe ejecutar cuando una actividad
    cambia de estado
    –   Vamos a sobreescribir onCreate()
        para asignar conducta a los botones



                              Interfaces de Usuario   11
Añadir una biblioteca
● Vamos a usar una biblioteca que nos
 conecta con twitter: jtwitter-yamba.jar
● Proyecto->Botón Dcho->Propiedades->
 Build Path->Add Jar




                        Interfaces de Usuario   12
Si te da problemas al
                 ejecutar...
●   “Limpia” para regenerar todo
    –   Project->Clean
● Mete el jar en un directorio lib o libs
● En Project->Properties->Java Build Path
    –   Selecciona todo en Order and Export y confirma
● Vuelve a probar...
● http://android.foxykeep.com/dev/how-to-fix-
 the-classdefnotfounderror-with-adt-17

                                Interfaces de Usuario    13
Manifiesto
● Para ir progresando en el ejemplo, vamos
 a crear diferentes versiones de
 StatusActivity y status.xml:
 StatusActivity0.java / status0.xml …
 StatusActivity3.java / status3.xml
● Para ir cambiando de una a otra, debemos
 cambiar en AndroidManifest.xml



                       Interfaces de Usuario   14
Permisos - Manifest
● Para publicar en Twitter, vamos a usar la red, y
 el usuario debe autorizarlo
● Los permisos se indican en el Manifesto (uses-
 permission)
  –   http://developer.android.com/reference/android/Manifest.permission.html
  –   Ej. android.permission.INTERNET // Usar Internet
  –   android.permission.CALL_PHONE // Llamar
  –   android.permission.NFC
  –   android.permission.READ_SMS
  –   android.permission.SEND_SMS
                                              Interfaces de Usuario             15
Permisos
AndroidManifest.xml




          Interfaces de Usuario   16
Layout




    Interfaces de Usuario   17
StatusActivity1.java (I)




             Interfaces de Usuario   18
StatusActivity1.java (II)

                - Recupera el estado guardado
                - Fija status2.xml como layout

               - creamos el objeto twitter para
               conectarnos
               - pon tu usuario/contraseña
               - si usas twitter, comenta setAPIRootUrl

                 - pasa del XML a Java

               - fija unOnClickListener en el botón

                 - implementamos OnClickListener():
                 recuperamos el texto de editText y
                 lo ponemos como status en twitter
                 - creamos una traza (log) para
              Interfaces de Usuario                 19
                 depurar
Widgets básicos: TextView
●   Son las etiquetas (Label) de Android
●   No son editables




               Realmente sí son
                editables, pero
             usaremos otra clase
              (EditText) para eso
                                    Interfaces de Usuario   20
Ejemplo - TextView




http://developer.android.com/reference/android/widget/TextView.html

                                             Interfaces de Usuario    21
Widgets básicos: EditText
   ●    Es una subclase de TextView, para campos
       editables. Permite personalizarlo para el
       tipo de campo:
        –   android:hint: pista para rellenar el campo
        –   android:inputType : tipo de entrada
            (textEmailAddress, textUri, textPassword,
            autoText (usa corrector ortográfico), …)
   ●   Mismos métodos getText()/setText()
 http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

http://developer.android.com/reference/android/widget/EditText.html
                                                    Interfaces de Usuario                     22
Widgets básicos: Button
● Button es una subclase de TextView
●Tenemos botones de texto (Button), con
 imagen (ImageButton), con 2 estados
 (ToggleButton), ….




http://developer.android.com/resources/tutorials/views/hello-formstuff.html
                                             Interfaces de Usuario            23
Button
●   ¿Cómo asignamos la conducta al botón?
    –   En el xml android:onClick=”método” (visto en
        SobreTeleco)
    –   En Java, implementando la interfaz
        onClickListener
         •   De forma anónima o no




                                     Interfaces de Usuario   24
Implementación anónima de
       la interfaz




             Interfaces de Usuario   25
Java – implementación de
         interfaz




             Interfaces de Usuario   26
¿Qué opción es mejor?
● Definir   android:onClick
  –   Mayor acoplamiento entre parte Java y XML
  –   Bueno si hay personas diferentes para hacer la interfaz
      (XML) y la lógica (Java)
● Definir   la interfaz o hacerla anónima
  –   Al implementar onClick, un único método onClick para toda
      la actividad – si queremos distinguir, deberíamos mirar el id
      (v.getId() si queremos distinguir según dónde hayas
      pinchado). Bueno si queremos la misma conducta pinches
      donde pinches.
  –   Implementarla anónima, generalmente la mejor opción,
      permite separar conducta por elemento
                                      Interfaces de Usuario           27
Widgets básicos:
    ImageView / ImageButton
●Subclases  de TextView y Button,
 respectivamente
● Permiten incluir imágenes (sin nada o con
 botón)
● La imagen debe ser un recurso (en
 res/drawable)
●se define en los atributos android:src
 (foreground) y/o android:background
 http://developer.android.com/reference/android/widget/ImageView.html

                                          Interfaces de Usuario         28
Patrón Template (Plantilla)
●La actividad sigue el patrón plantilla
●Una clase abstracta define métodos o
 pasos que queremos ejecutar y las
 subclases “rellenan” estos pasos




    http://en.wikipedia.org/wiki/Template_method_pattern
                                       Interfaces de Usuario   29
Trazas - Depuración
●   Según va ejecutando el programa
    –   estoy aquí ...
    –   esta variable vale tanto ...
●De    formas que podemos ir “siguiendo la
    ejecución”
    –   con diferentes niveles de detalle




                                 Interfaces de Usuario   30
Trazas – System.out.println
● Se   pueden meter sentencias explícitas
  –   System.out.println(“estoy aquí ...”);
  –   System.out.println(“variable= “ + valor);
● Problemas
  –    hay que editar el programa
  –   cada vez que queremos cambiar una traza
  –   cuando se entrega el programa
  –   hay que editarlo y quitar las trazas
  –   si el programa está compilado y algo falla,
  –   hay que editarlo para ver qué pasa
                                   Interfaces de Usuario   31
Puesta a punto
         pruebas


        desarrollo               fallo serio
falla

         pruebas
        pasa         detalle
                                  ¿dónde falla qué?
                                          trazas
        pruebas de
        aceptación             falla
        pasa


                               Interfaces de Usuario   32
Logging en Android
●    Al poner un mensaje de traza, indicamos
    “su relevancia”:
    –   Argumentos TAG, msg. Se recomienda que
        TAG sea una constante privada de la clase
    –   Log.wtf (no debería suceder, What a Terrible
        Failure, Log.e(), Log.w(), Log,i(), Log.d(),
        Log.v()                               ERROR
                                             WARN
                                          INFO
                                     DEBUG
                                VERBOSE
                               Interfaces de Usuario   33
Ver trazas y depurar
●    Perspectiva DDMS
    (Dalvik Debug Monitor Server)
    –   View LogCat




                          Interfaces de Usuario   34
Filtrar trazas
●    Podemos filtrar para ver menos tranzas
    (por log, etc.)




                          Interfaces de Usuario   35
Loggers
●   Poner loggers (en vez de System.err.println
    o System.out.println)
    –   Permite analizar qué ha pasado
    –   Hay otros programas (de gestión del servicio)
        que pueden analizar estos logs para generar
        alarmas si hay errores, y que se arregle




                               Interfaces de Usuario    36
Loggers en Java
● En Java tenemos el paquete estándar java.util.logging
● La clase que nos 'da un logger' es java.util.logging.Logger
● Para que una clase 'tenga logger', se declara un campo static
  –    private static final Logger log =
       Logger.getLogger(“nombre.de.la.clase”);
● Niveles: FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE
● En la clase, generamos las trazas:
  –    log.info(msg), log.warning(msg), log.severe(msg), log.finer(msg), …
● El   nivel de trazas se define en un fichero, java.logger, con sintaxis propia




                                                 Interfaces de Usuario             37
Conclusiones Loggers /
               Trazas
● Cuando     un programa no funciona
  –   las trazas descubren cómo se llega al fallo
● Las   trazas son una inversión a futuro
  –   deben quedar en el código para siempre
  –   pero con el nivel de detalle mínimo (errores) si no
      estamos depurando
● Conviene controlar el detalle de trazado
● Ver apuntes de la asignatura
  –   http://www.lab.dit.upm.es/~lprg/material/apuntes/log/lo
      g.htm
                                  Interfaces de Usuario         38
Resumen
● Hemos    aprendido a programar actividades
● Lainterfaz de las actividades se programa en XML,
 donde especificamos contenedores (Layout) y
 widgets (View)
● Debemos    añadir dependencias como bibliotecas
 (jar) en el proyecto
● Hemos  visto la relación entre Java y XML para
 varios widgets: TextView, EditText, Button,
 ImageView, ImageButton
● Las   trazas facilitan la depuración de programas
                               Interfaces de Usuario   39
¿Preguntas?




      Interfaces de Usuario   40

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Unidad 2 tópicos avanzados de programacion
Unidad 2 tópicos avanzados de programacionUnidad 2 tópicos avanzados de programacion
Unidad 2 tópicos avanzados de programacion
 
Trabajo teórico exposcición
Trabajo teórico exposciciónTrabajo teórico exposcición
Trabajo teórico exposcición
 
JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeans
 
interfaz grafica
interfaz graficainterfaz grafica
interfaz grafica
 
Layout
LayoutLayout
Layout
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fx
 
Lps 15 gu-iconswing
Lps 15 gu-iconswingLps 15 gu-iconswing
Lps 15 gu-iconswing
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Longomatch 0.15.5 manual (1)
Longomatch 0.15.5   manual (1)Longomatch 0.15.5   manual (1)
Longomatch 0.15.5 manual (1)
 
Disección del midlet Hola Mundo en J2ME
Disección del midlet Hola Mundo en J2MEDisección del midlet Hola Mundo en J2ME
Disección del midlet Hola Mundo en J2ME
 
Manual java swing
Manual java swingManual java swing
Manual java swing
 
Clase swing
Clase swingClase swing
Clase swing
 
Clase swing
Clase swingClase swing
Clase swing
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos Java
 
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software Libre
 
Los mi dlets_imprimible
Los mi dlets_imprimibleLos mi dlets_imprimible
Los mi dlets_imprimible
 
CLASE SWING
CLASE SWING CLASE SWING
CLASE SWING
 
Swing
SwingSwing
Swing
 

Ähnlich wie Tema 4 3_3_interfaces_de_usuario

Ähnlich wie Tema 4 3_3_interfaces_de_usuario (20)

Tema 4 3_2_interfaces_de_usuario
Tema 4 3_2_interfaces_de_usuarioTema 4 3_2_interfaces_de_usuario
Tema 4 3_2_interfaces_de_usuario
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Tema
Tema Tema
Tema
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
Tema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_serviciosTema 4 4_1_intenciones_servicios
Tema 4 4_1_intenciones_servicios
 
principios básicos
principios básicosprincipios básicos
principios básicos
 
Creación de Procesos en Android
Creación de Procesos en AndroidCreación de Procesos en Android
Creación de Procesos en Android
 
Taller de programación
Taller de programaciónTaller de programación
Taller de programación
 
Curso Android Tema 2
Curso Android Tema 2Curso Android Tema 2
Curso Android Tema 2
 
Seminario Android
Seminario AndroidSeminario Android
Seminario Android
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Android
AndroidAndroid
Android
 
Pre karla
Pre karlaPre karla
Pre karla
 
Introduccion a NetLogo
Introduccion a NetLogoIntroduccion a NetLogo
Introduccion a NetLogo
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Curso android desarrollo de aplicaciones moviles
Curso android   desarrollo de aplicaciones movilesCurso android   desarrollo de aplicaciones moviles
Curso android desarrollo de aplicaciones moviles
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
 
Proceso MDA y Scrum
Proceso MDA y ScrumProceso MDA y Scrum
Proceso MDA y Scrum
 
Iniciación android
Iniciación androidIniciación android
Iniciación android
 

Mehr von Carlos A. Iglesias (20)

GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Introducción HTML
Introducción HTMLIntroducción HTML
Introducción HTML
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
UPM GSI Presentation
UPM GSI PresentationUPM GSI Presentation
UPM GSI Presentation
 
Introducción Análisis y Diseño
Introducción Análisis y DiseñoIntroducción Análisis y Diseño
Introducción Análisis y Diseño
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
1 intro php
1 intro php1 intro php
1 intro php
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
Introducción TEWC
Introducción TEWCIntroducción TEWC
Introducción TEWC
 
Tema 4.1 Introduccion Android
Tema 4.1 Introduccion AndroidTema 4.1 Introduccion Android
Tema 4.1 Introduccion Android
 
Tema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacionTema 4.2 Desarrollo Android e instalacion
Tema 4.2 Desarrollo Android e instalacion
 
Tema 4.4 Actividades
Tema 4.4 ActividadesTema 4.4 Actividades
Tema 4.4 Actividades
 
Tema 4.5 interfaces
Tema 4.5 interfacesTema 4.5 interfaces
Tema 4.5 interfaces
 
Tema 4.6 Intenciones
Tema 4.6 IntencionesTema 4.6 Intenciones
Tema 4.6 Intenciones
 
Tema 4.7 Acceso a datos
Tema 4.7 Acceso a datosTema 4.7 Acceso a datos
Tema 4.7 Acceso a datos
 
Tema 4.8 Preferencias
Tema 4.8 PreferenciasTema 4.8 Preferencias
Tema 4.8 Preferencias
 

Kürzlich hochgeladen

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 

Kürzlich hochgeladen (11)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Tema 4 3_3_interfaces_de_usuario

  • 1. Análisis y Diseño de Software Interfaces de Usuario La aplicación Yamba Carlos A. Iglesias <cif@gsi.dit.upm.es> Departamento de Ingeniería de Sistemas Telemáticos http://moodle.dit.upm.es
  • 2. Leyenda Teoría Ejercicio práctico en el ordenador Ampliación de conocimientos Lectura / Vídeo / Podcast Práctica libre / Experimentación Interfaces de Usuario 2
  • 3. Temario ● 4.1 Introducción a Android [Gar10, cap1-2 ] ● 4.2 Desarrollo con Android [Gar10, cap3-5] ● 4.3 Interfaces de Usuario [Gar10, cap6] – 4.3.1 Ejemplo SobreTeleco – 4.3.2 Layouts y Views – 4.3.3 Widgets y Trazas. Interfaz del proyecto Yamba – 4.3.4 Hebras e Internacionalización. Interfaz Yamba ● 4.4 Intenciones y Servicios [Gar10, cap7-8] ● 4.5 Acceso a Datos [Gar10, cap9] Interfaces de Usuario 3
  • 4. Bibliografía ● Libro de texto: – [Gar10] Learning Android, Marko Gargenta, O'Reilly, 2010. Disponible en http://ofps.oreilly.com/titles/9781449390501/ – Capítulos 7 – http://www.youtube.com/watch?v=SW82-YOOMIs ● Android Developers – http://developer.android.com/guide/topics/fundamentals.html – http://developer.android.com/guide/topics/ui/index.html Interfaces de Usuario 4
  • 5. Objetivos ● Ver un ejemplo más complejo de interfaces de usuario ● Aprender más detalles de algunos widgets (TextView, Button, EditText) ● Aprender a depurar con trazas Interfaces de Usuario 5
  • 6. La aplicación Yamba ● Vamos a hacer una aplicación sencilla que tuitea Interfaces de Usuario 6
  • 7. Mensajes publicados ●Puedes publicar tus mensajes en twitter o en marakana (yamba.markana.com), créate una cuenta. Interfaces de Usuario 7
  • 8. Comenzamos Yamba v1 (I) ● Puedes crearlo o partir del proyecto Yamba-ADSW ● Crear proyecto Android – Seleccionar Android 2.3.3 – Seleccionar paquete com.marakana.yamba – Actividad: StatusActivity0 ● Copia los recursos de resYamba.zip (icono de la aplicación y el fondo) Interfaces de Usuario 8
  • 9. Otros cambios ● StatusActivity0.java ●res/values/strings.xml Interfaces de Usuario 9
  • 10. Ejecutar ● Compila y se ejecuta, pero no hace nada... ● Vamos a extender StatusActivity0.java – Programación programática Interfaces de Usuario 10
  • 11. Modificando una actividad ● En Android, no podemos cambiar el estado de una Actividad ● Pero sí podemos indicar al ActivityManager qué debe ejecutar cuando una actividad cambia de estado – Vamos a sobreescribir onCreate() para asignar conducta a los botones Interfaces de Usuario 11
  • 12. Añadir una biblioteca ● Vamos a usar una biblioteca que nos conecta con twitter: jtwitter-yamba.jar ● Proyecto->Botón Dcho->Propiedades-> Build Path->Add Jar Interfaces de Usuario 12
  • 13. Si te da problemas al ejecutar... ● “Limpia” para regenerar todo – Project->Clean ● Mete el jar en un directorio lib o libs ● En Project->Properties->Java Build Path – Selecciona todo en Order and Export y confirma ● Vuelve a probar... ● http://android.foxykeep.com/dev/how-to-fix- the-classdefnotfounderror-with-adt-17 Interfaces de Usuario 13
  • 14. Manifiesto ● Para ir progresando en el ejemplo, vamos a crear diferentes versiones de StatusActivity y status.xml: StatusActivity0.java / status0.xml … StatusActivity3.java / status3.xml ● Para ir cambiando de una a otra, debemos cambiar en AndroidManifest.xml Interfaces de Usuario 14
  • 15. Permisos - Manifest ● Para publicar en Twitter, vamos a usar la red, y el usuario debe autorizarlo ● Los permisos se indican en el Manifesto (uses- permission) – http://developer.android.com/reference/android/Manifest.permission.html – Ej. android.permission.INTERNET // Usar Internet – android.permission.CALL_PHONE // Llamar – android.permission.NFC – android.permission.READ_SMS – android.permission.SEND_SMS Interfaces de Usuario 15
  • 16. Permisos AndroidManifest.xml Interfaces de Usuario 16
  • 17. Layout Interfaces de Usuario 17
  • 18. StatusActivity1.java (I) Interfaces de Usuario 18
  • 19. StatusActivity1.java (II) - Recupera el estado guardado - Fija status2.xml como layout - creamos el objeto twitter para conectarnos - pon tu usuario/contraseña - si usas twitter, comenta setAPIRootUrl - pasa del XML a Java - fija unOnClickListener en el botón - implementamos OnClickListener(): recuperamos el texto de editText y lo ponemos como status en twitter - creamos una traza (log) para Interfaces de Usuario 19 depurar
  • 20. Widgets básicos: TextView ● Son las etiquetas (Label) de Android ● No son editables Realmente sí son editables, pero usaremos otra clase (EditText) para eso Interfaces de Usuario 20
  • 22. Widgets básicos: EditText ● Es una subclase de TextView, para campos editables. Permite personalizarlo para el tipo de campo: – android:hint: pista para rellenar el campo – android:inputType : tipo de entrada (textEmailAddress, textUri, textPassword, autoText (usa corrector ortográfico), …) ● Mismos métodos getText()/setText() http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType http://developer.android.com/reference/android/widget/EditText.html Interfaces de Usuario 22
  • 23. Widgets básicos: Button ● Button es una subclase de TextView ●Tenemos botones de texto (Button), con imagen (ImageButton), con 2 estados (ToggleButton), …. http://developer.android.com/resources/tutorials/views/hello-formstuff.html Interfaces de Usuario 23
  • 24. Button ● ¿Cómo asignamos la conducta al botón? – En el xml android:onClick=”método” (visto en SobreTeleco) – En Java, implementando la interfaz onClickListener • De forma anónima o no Interfaces de Usuario 24
  • 25. Implementación anónima de la interfaz Interfaces de Usuario 25
  • 26. Java – implementación de interfaz Interfaces de Usuario 26
  • 27. ¿Qué opción es mejor? ● Definir android:onClick – Mayor acoplamiento entre parte Java y XML – Bueno si hay personas diferentes para hacer la interfaz (XML) y la lógica (Java) ● Definir la interfaz o hacerla anónima – Al implementar onClick, un único método onClick para toda la actividad – si queremos distinguir, deberíamos mirar el id (v.getId() si queremos distinguir según dónde hayas pinchado). Bueno si queremos la misma conducta pinches donde pinches. – Implementarla anónima, generalmente la mejor opción, permite separar conducta por elemento Interfaces de Usuario 27
  • 28. Widgets básicos: ImageView / ImageButton ●Subclases de TextView y Button, respectivamente ● Permiten incluir imágenes (sin nada o con botón) ● La imagen debe ser un recurso (en res/drawable) ●se define en los atributos android:src (foreground) y/o android:background http://developer.android.com/reference/android/widget/ImageView.html Interfaces de Usuario 28
  • 29. Patrón Template (Plantilla) ●La actividad sigue el patrón plantilla ●Una clase abstracta define métodos o pasos que queremos ejecutar y las subclases “rellenan” estos pasos http://en.wikipedia.org/wiki/Template_method_pattern Interfaces de Usuario 29
  • 30. Trazas - Depuración ● Según va ejecutando el programa – estoy aquí ... – esta variable vale tanto ... ●De formas que podemos ir “siguiendo la ejecución” – con diferentes niveles de detalle Interfaces de Usuario 30
  • 31. Trazas – System.out.println ● Se pueden meter sentencias explícitas – System.out.println(“estoy aquí ...”); – System.out.println(“variable= “ + valor); ● Problemas – hay que editar el programa – cada vez que queremos cambiar una traza – cuando se entrega el programa – hay que editarlo y quitar las trazas – si el programa está compilado y algo falla, – hay que editarlo para ver qué pasa Interfaces de Usuario 31
  • 32. Puesta a punto pruebas desarrollo fallo serio falla pruebas pasa detalle ¿dónde falla qué? trazas pruebas de aceptación falla pasa Interfaces de Usuario 32
  • 33. Logging en Android ● Al poner un mensaje de traza, indicamos “su relevancia”: – Argumentos TAG, msg. Se recomienda que TAG sea una constante privada de la clase – Log.wtf (no debería suceder, What a Terrible Failure, Log.e(), Log.w(), Log,i(), Log.d(), Log.v() ERROR WARN INFO DEBUG VERBOSE Interfaces de Usuario 33
  • 34. Ver trazas y depurar ● Perspectiva DDMS (Dalvik Debug Monitor Server) – View LogCat Interfaces de Usuario 34
  • 35. Filtrar trazas ● Podemos filtrar para ver menos tranzas (por log, etc.) Interfaces de Usuario 35
  • 36. Loggers ● Poner loggers (en vez de System.err.println o System.out.println) – Permite analizar qué ha pasado – Hay otros programas (de gestión del servicio) que pueden analizar estos logs para generar alarmas si hay errores, y que se arregle Interfaces de Usuario 36
  • 37. Loggers en Java ● En Java tenemos el paquete estándar java.util.logging ● La clase que nos 'da un logger' es java.util.logging.Logger ● Para que una clase 'tenga logger', se declara un campo static – private static final Logger log = Logger.getLogger(“nombre.de.la.clase”); ● Niveles: FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE ● En la clase, generamos las trazas: – log.info(msg), log.warning(msg), log.severe(msg), log.finer(msg), … ● El nivel de trazas se define en un fichero, java.logger, con sintaxis propia Interfaces de Usuario 37
  • 38. Conclusiones Loggers / Trazas ● Cuando un programa no funciona – las trazas descubren cómo se llega al fallo ● Las trazas son una inversión a futuro – deben quedar en el código para siempre – pero con el nivel de detalle mínimo (errores) si no estamos depurando ● Conviene controlar el detalle de trazado ● Ver apuntes de la asignatura – http://www.lab.dit.upm.es/~lprg/material/apuntes/log/lo g.htm Interfaces de Usuario 38
  • 39. Resumen ● Hemos aprendido a programar actividades ● Lainterfaz de las actividades se programa en XML, donde especificamos contenedores (Layout) y widgets (View) ● Debemos añadir dependencias como bibliotecas (jar) en el proyecto ● Hemos visto la relación entre Java y XML para varios widgets: TextView, EditText, Button, ImageView, ImageButton ● Las trazas facilitan la depuración de programas Interfaces de Usuario 39
  • 40. ¿Preguntas? Interfaces de Usuario 40