Вы находитесь на странице: 1из 74

ELECTIVA IV

Aplicación en Android
Studio

UNIVERSIDAD GUAYAQUIL – Electiva IV 2


Aplicación

GeoQuiz es una aplicación que evalúa tus conocimientos de la


geografía ecuatoriana a través de preguntas con respuestas de
“Verdadero” o “Falso”

Este proyecto nos introducirá en algunos aspectos claves del


desarrollo de Android, tales como buenas prácticas de
componente y arquitectura
Aplicación
Aplicación
Cosas a tener en cuenta
• Package name es un identificador único en el ecosistema
android. Puede ser cualquier nombre, pero tradicionalmente se
establece una URL en reverso de tu dominio, por ejemplo,
www.miempresa.com, entonces sería
com.miempresa.aplicación.

• Save Location establece la localización del proyecto.

• Language seleccionamos Java

• Minimum API Level seleccionamos API 26: Android 8.0 (Oreo).


Cosas a tener en cuenta

•Android Studio permite trabajar con versiones


antiguas, muchas de los aspectos de seguridad
y privacidad fueron introducidos en el API 25.

•Para mejorar la seguridad, Google anuncio que


a partir de agosto 2018 solo permitirán publicar
nuevas aplicación utilizando el API 26 o
superior
Cosas a tener en cuenta

• La vista de la izquierda es la project tool window y a la


derecha tenemos el editor de código
La vista derecha
La vista de la izquierda tenemos el editor de
es la project tool código
window
Cosas a tener en cuenta
Cosas a tener en cuenta
Cosas a tener en cuenta
Cosas a tener en cuenta
Jerarquía de Componentes

1. android:layout_width y android:
layout_height
• match_parent: la view será tan
grande como su padre
• wrap_content: la view será tan
grande como su contenido
2. android:padding: espacio interior
del elemento
3. LinearLayout:
• android:orientation: determina
como los widgets serán
mostrados en pantalla (vertical u
horizontal)
Atributos de los widges

1. android:layout_width y android: layout_height


• match_parent: la view será tan grande como su padre
• wrap_content: la view será tan grande como su
contenido
2. android:padding: espacio interior del elemento
3. LinearLayout:
• android:orientation: determina como los widgets serán
mostrados en pantalla (vertical u horizontal)
Creando recursos string
• Todos los proyectos incluyen el archivo
res/values/ string.xml
• Para obtener el valor de un recurso string desde cualquier xml, se lo
referencia como @string/nombre_recurso
• En la proyecto creamos 3 recursos string:
Creando recursos string
• Todos los proyectos incluyen el archivo
res/values/ string.xml
• Para obtener el valor de un recurso string desde cualquier xml, se lo
referencia como @string/nombre_recurso
• En la proyecto creamos 3 recursos string:
Código

UNIVERSIDAD GUAYAQUIL – Electiva IV 18


Código

• AppCompatActivity es una
subclase de la clase Activity.

• El método onCreate(Bundle)
es llamado cuando se
instancia una subclase
Activity.

• setContentView(int
layoutResID) infla el layout.
Cuando un layout se infla,
cada widget es instanciado
Código
• AppCompatActivity es una subclase de la clase
Activity.

• El método onCreate(Bundle) es llamado cuando se


instancia una subclase Activity.

• setContentView(int layoutResID) infla el layout.


Cuando un layout se infla, cada widget es instanciado
Conectando widgets con el código

Crear componentes
en .xml
Conectando widgets con el código

Definir variables
en java
Conectando widgets con el código

Inflar Variables

Relación entre el diseño y el código


Conectando widgets con el código

Cuando se le asigna un Id utilizando


android:id=“+id/ control”.

se puede acceder a este elemento


utilizando la función findViewById.
Eventos en Android

Identificar y
describir cada uno
de los métodos
eventos

Método agrupa un conjunto de


instrucciones por ejemplo una función

Evento es una actividad por la que pasa


un componente. Ejemplo evento clicked,
eliminar, etc
Eventos en Android

Identificar y
describir cada uno
de los métodos
eventos
Creando Android Virtual
Device en Android Studio

UNIVERSIDAD GUAYAQUIL – Electiva IV 27


Sobre AVD

• AVDs son esencialmente emuladores que permiten probar


las aplicaciones Android con la necesidad de utilizar un
dispositivo físico.

• Un AVD puede ser configurado para emular un variedad de


hardware de diferentes características tales como tamaño
de la pantalla, capacidad de memoria y otras características
como la cámara.
Recordando
Creando un nuevo AVD

• Para crea un nuevo dispositivo virtual vamos al menú de la


ventana principal Tools -> Android -> AVD Manager.

Recordando
Android y MVC
(Modelo - Vista - Controlador)

UNIVERSIDAD GUAYAQUIL – Electiva IV 31


Datos
• Model: contiene los datos y lógica de
negocio. Los model son clases alineadas
a las entidades del problema que se
pretende resolver.
Aplicación • View objects: son los objetos que se
dibujan en la pantalla y cómo estos
responden a las interacciones del
usuario con la pantalla.
• Controllers: Están diseñados para
contener lógica de aplicación.
Responden a varios eventos disparados
por los view objects y gestiona el flujo
Interfaz Usuario de datos entre los modelos y las views
Model-View-Controller

• Model: contiene los datos y lógica de negocio. Los model son


clases alineadas a las entidades del problema que se pretende
resolver.
• View objects: son los objetos que se dibujan en la pantalla y
cómo estos responden a las interacciones del usuario con la
pantalla.
• Controllers: Están diseñados para contener lógica de aplicación.
Responden a varios eventos disparados por los view objects y
gestiona el flujo de datos entre los modelos y las views
Actualizando la View
La Clase Pregunta

Definir clase
Integrantes
Creando el arreglo de preguntas

Crear Arreglo de
Integrantes
Método para verificar las respuestas
Funcionalidad de la aplicación
PRÁCTICA
Agregar un botón que permita ver hacia atrás las preguntas

UNIVERSIDAD GUAYAQUIL – Electiva IV 40


Descargar Iconos para una Aplicación
Android

https://material.io/tools/icons/
Descargar Iconos para una Aplicación
Android

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


42
Investigación
Agregando Iconos a la aplicación
Ciclo de vida de una Activity

Inicia - Finaliza

Empiezas a interactuar
- Dejar de interactuar

Sacar de la pila – Poner en la pila

Recordando
Método del Ciclo de Vida

•Nunca de debe llamar a ningún método del


ciclo de vida. Se sobrescribe los métodos en
la Activity. Android llama a los método
según sus estados

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


46
Investigación
Método On Create
•El sistema operativo llama al método onCreate
después de crear la instancia Activity, pero
antes de que se dibuje en la pantalla.

•En el método onCreate se inflan los widgets, se


referencian los widgets, se establecen los
listeners o se conecta a un modelo externo.
UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de
47
Investigación
Explorando el ciclo de vida

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


48
Investigación
Rotación de la pantalla y el ciclo de
vida de una Activity
•Cuando se gira la pantalla, la Activity es
destruida y recreada

•En el proyecto actual, la variable


posicionActual vuelve a cero, mostrando la
primera pregunta
UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de
49
Investigación
Diseño en Landscape

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


50
Investigación
Diseño en Landscape

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


51
Investigación
Diseño en Landscape

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


52
Investigación
Diseño en Landscape

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


53
Investigación
Diseño en Landscape

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


54
Investigación
Guardando datos de rotación
• Para ajustar la perdida de datos en la rotación debemos
guardar los datos antes de rotar y recuperarlos al finalizar
la rotación.

• Para guardar los datos antes de la rotación utilizamos el


método onSaveIntanceState(state: Bundle?).

• El objeto Bundle guarda datos en una estructura keyvalue

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de Pendiente


55
Investigación
PRÁCTICA
Deshabilitar el botón de la pregunta que el usuario ha contestado

Pendiente
UNIVERSIDAD GUAYAQUIL – Electiva IV 56
Crear otra Activity

•Crear otra Activity

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


57
Investigación
Segunda Activity

•Se va a agregar una segunda Activity de


información que ofrece a los usuarios ver la
respuesta a la pregunta actual, como se
muestra a continuación

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de Pendiente


58
Investigación
Recursos String

•Se va a agregar una segunda Activity de


información que ofrece a los usuarios ver la
respuesta a la pregunta actual, como se
muestra a continuación.

Pendiente
Segunda Activity
Segunda Activity
Segunda Activity

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de


62
Investigación
Archivo AndroidManifest.xml

• El manifest es un archivo XML que contiene


metadata de la aplicación para el sistema operativo.

• Cada Activity deberá estar declarada en el manifest


para que el SO puede acceder a esta.

• Es archivo es llamado AndroidManifest, y esta


ubicado en app/manifest
AndroidManifest
• android:name le dice al SO las
Activities disponibles

• En package se especifica las ruta


donde estan ubicadas todas la
Activities

• También se puede especificar una


versión mas larga:

android:name=“com.curso.miprimer
aaplicacion”
AndroidManifest

• android:name le dice al SO las Activities disponibles

• En package se especifica las ruta donde estan


ubicadas todas la Activities

• También se puede especificar una versión mas larga:


• android:name=“com.curso.miprimeraaplicacion”
Actualizando MainActivity

Pendiente
Iniciando otro Activity

Para iniciar otra Activity utilizamos el método:


• startActivity(intent: Intent)
Objeto Intent
• Un Intent es un objeto que se utiliza para comunicarse con el SO.
Provee diferentes constructores, pero el más utilizado es el
siguiente:
public Intent(Context packgeContext, Class cls)

• El argumento Context le dice a ActivityManager desde donde se


esta llamando a la nueva Activity

• El argumento Class especifica la clase Activity que ActivityManager


debería empezar
Pendiente
Enviando el resultado
• Existen dos formas de pasar datos de una actividad hija a una
padre:
 public final void setResult(int resultCode)
 public final void setResult(int resultCode, Intent data)
• resultCode es una variable constante:
 Activity.RESULT_OK
 Activity.RESULT_CANCELED
 Activity.RESULT_FIRST_USER
• resultCode es útil cuando el padre necesita realizar diferentes
Pendiente
acciones dependiendo de como la actividad hija finaliza
Enviando el resultadO

Defino la variable tipo Intent


Inicializa el parámetro que viaja por en intent
Seteo el valor de variable

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de Pendiente


71
Investigación
Obteniendo el resultado de vuelta

Cuando se quiere retornar un valor de la actividad hija a la


actividad padre, se utiliza el método:
• public void startActivityForResult(Intent intent, int
requestCode)
El segundo parámetro es un entero definido por el usuario que
es enviado a la actividad hija y es recibido en la actividad padre
UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de Pendiente
72
Investigación
Entero definido por el usuario

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de Pendiente


73
Investigación
Obteniendo el resultado de vuelta

UNIVERSIDAD GUAYAQUIL - Presentación Proyecto de Pendiente


74
Investigación

Вам также может понравиться