Está en la página 1de 5

1

Tópicos Avanzados de Programación Unidad: 5.- Programación de dispositivos móviles. Laboratorio: 2 Aplicación para dispositivos móviles que utiliza el patrón MVC. Modalidad: Individual.

Objetivo: Al finalizar la actividad, el alumno habrá desarrollado una aplicación para dispositivos móviles que utilice el patrón MVC.

Requisitos para la práctica

Para realizar esta práctica de laboratorio se requieren los siguientes elementos:

  • 1. Computadora personal con sistema operativo Windows 7 o superior, MaxOS o Linux.

  • 2. Acceso a Internet.

  • 3. Java Development Kit (JDK), versión 7 o posterior.

  • 4. Android Studio, versión 1.5 o posterior.

  • 5. Git 2.7 o posterior

  • 6. Haber realizado la lectura sobre Uso de Git.

  • 7. Haber realizado la lectura sobre Estructura de una aplicación Android.

Para realizar la actividad desarrolle los siguientes puntos:

1)

Ejecute Android Studio. Inicie un nuevo proyecto con los siguientes datos:

 
 

Nombre de la aplicación:

GeoApp

Dominio de la organización:

 

Plataforma:

android.jorgechuc.com Phone and Tablet

SDK mínimo:

API 16: Android 4.1 (Jelly Bean)

Activity a utilizar:

Empty Activity

   

Nombre de la Activity Nombre del layout

GeoActivity activity_geo

2)

Si no está disponible para editar, abra el layout de la aplicación (activity_geo.xml). Cámbiese al modo Text de edición del layout y agregue los componentes que se señalan en la siguiente jerarquía:

1 Tópicos Avanzados de Programación Unidad : 5.- Programación de dispositivos móviles. Laboratorio : 2 –

Ing. Jorge Luis Chuc López

2

3)

Abra el archivo string.xml que se encuentra en la carpeta res/values. Agregue las siguientes cadenas de recursos:

Nombre del recurso cadena

Texto

texto_pregunta

¿La península de Yucatán se encuentra al Norte de México?

texto_boton_cierto

Cierto

texto_boton_falso

Falso

4)

Vea el Preview del layout y será similar a la siguiente gráfica:

4) Vea el Preview del layout y será similar a la siguiente gráfica: 5) Ejecute la

5)

Ejecute la aplicación. Notará que los botones aún no reaccionan al hacerles clic.

6)

Abra Git Bash y cambie su ubicación del directorio de trabajo a la carpeta ~/AndroidStudioProjects. Posteriormente cree un repositorio git para el proyecto. Esto puede hacerlo usando los comandos siguientes (se asume que el directorio de trabajo es la carpeta Home del usuario):

7) $ cd AndroidStudioProjects

8)

$ cd GeoApp

9)

$ echo “# Proyecto GeoApp. Una trivia sobre geografía.” >> README.md

10) Abra su navegador de internet y vaya a la dirección gitignore.io 11) En el campo de búsqueda escriba y selecciones los siguientes elementos dándole Enter a cada uno de ellos para que sean agregados: Android, Java, Intellij. Posteriormente dele clic al control ComboBox (se encuentra a la derecha del botón Generate), para seleccionar la opción Download File. En su carpeta Descargas encontrará un archivo de nombre gitignore. 12) Con ayuda del Explorador de Archivos de Windows, mueva este archivo a la carpeta de su proyecto GeoApp. 13) Usando Git Bash cambie el nombre del archivo gitignore a .gitignore, usando los siguientes comandos:

$ mv gitignore .gitignore

14) Cree un repositorio Git para el proyecto, usando el comando:

$ git init $ git status

15) Agregue al repositorio los archivos del proyecto para darle seguimiento con el control de versiones. Utilice los siguientes comandos:

$ git add . $ git status

16) El comando anterior hizo que los archivos del proyecto, que están en su directorio de trabajo, sean colocados en el área Stage de Git. 17) Ahora realice un commit para mover estos archivos del área Stage y sean convertidos en objetos commit. Utilice los siguientes comandos

$ git commit –m “Versión inicial del proyecto GeoApp” $ git status

18) Agreguemos los siguientes recursos de cadena al proyecto. Vaya al archivo strings.xml y agregue los siguientes recursos:

Nombre del recurso cadena

Texto

Ing. Jorge Luis Chuc López

3

texto_correcto

¡Correcto!

texto_incorrecto

¡Incorrecto!

19) Vaya al archivo GeoActivity.java y agregue dos variables de instancia a la clase. Las dos serán de tipo Button y su nombre será mBotonCierto y mBotonFalso. Asegúrese de que importa la clase Buttom. 20) Vaya al método onCreate() y al final del método inicialice las dos variables mediante el código:

mBotonCierto = (Button) findViewById(R.id.boton_cierto); mBotonFalso = (Button) findViewById(R.id.boton_falso);

21) Agregue el manejo de eventos para los dos botones utilizando una clase que implemente la interfaz OnClickListener.

mBotonCierto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(GeoActivity.this, R.string.texto_correcto, Toast.LENGTH_SHORT) .show();

}

}); mBotonFalso.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(GeoActivity.this, R.string.texto_incorrecto, Toast.LENGTH_SHORT) .show();

});

}

$ git status $ git add . $ git status $ git commit –am “Versión con demostración de manejo de eventos del proyecto GeoApp” $ git status

22) Agregue al repositorio los archivos nuevos y modificados del proyecto para darle seguimiento con el control de versiones. Utilice los siguientes comandos:

$ git add . $ git status
$ git add .
$ git status

23) Ahora realice un commit. Utilice los siguientes comandos

$ git commit –m “Versión con interacción con el usuario para una sola pregunta” $ git status

24) En el panel de Proyectos (Projects), posiciónese en la carpeta java y dé clic derecho. Elija crear un nuevo paquete (Package) en …/app/src/main/java, cuyo nombre sea com.jorgechuc.android.model 25) Agregue una nueva clase en el paquete recién creado, de nombre Pregunta. Si pregunta si se desea agregar el nuevo archivo a Git, responda que no. 26) Modifique la clase para que se apegue al siguiente modelo:

Pregunta

-mIdResTexto : Integer

-mRespuestaVerdadera : boolean +«constructor»Pregunta(idResTexto : Integer, respuestaVerdadera : boolean); +setIdResTexto(idResTexto : Integer) : void; +getIdResTexto() : Integer; +setRespuestaVerdadera(respuestaVerdadera : boolean) : void; +isRespuestaVerdadera() : boolean

27) Modifique el archivo strings.xml para incluir los siguientes recursos de cadena

Nombre del recurso cadena

Texto

texto_boton_siguiente

Siguiente

texto_pregunta_1

¿La península de Yucatán está en el norte de México?

texto_pregunta_2

Nuestro Sistema Solar se encuentra en galaxia Vía Láctea

texto_pregunta_3

El Oceáno más grande de nuestro planeta es el Oceáno Pacífico

texto_pregunta_4

Los vientos alisios soplan del noreste al suroeste

texto_pregunta_5

El estado más grande de nuestra República Mexicana es Sonora

28) Modifique el archivo de layout (activity_geo) para agregar un botón debajo del LinearLayout anidado Ing. Jorge Luis Chuc López

4

Operación

Widget

Atributo

Valor

Modificar

TextView

android:id

@+id/texto_pregunta

   

android:text

texto_pregunta_1

Agregar

Button

android:id

@+id/boton_siguiente

   

android:layout_width

wrap_content

   

android:layout_height

wrap_content

   

android:text

@string/texto_boton_siguiente

29) Regrese al archivo GeoActivity.java y agregue variables de instancia para los widgets anteriores:

Id del widget en el layout

Variable de instancia

 

mTextoPregunta

texto_pregunta boton_siguiente

mBotonSiguiente

30) Inicialice cada variable de instancia con el objeto creado al “inflarse” la interfaz de usuario, tal y como se hizo en el paso 20. 31) Para manejar varias preguntas usaremos un arreglo constante que guardará las preguntas, y haremos uso de una variable de tipo entero para indicar el número de la pregunta que se está mostrando:

private Pregunta mBancoDePreguntas[] = { new Pregunta(R.string.texto_pregunta_1, false), new Pregunta(R.string.texto_pregunta_2, true), new Pregunta(R.string.texto_pregunta_3, true), new Pregunta(R.string.texto_pregunta_4, true), new Pregunta(R.string.texto_pregunta_5, false), }; private int mPreguntaActual = 0;

32) En la clase GeoActivity agregue el siguiente método:

private void actualizarPregunta() { int preguntaActual = mBancoDePreguntas[mPreguntaActual].getIdResTexto(); mTextoPregunta.setText(preguntaActual); }

33) Al final del método onCreate() invoque al método actualizarPregunta(). 34) También agregue un manejador de eventos para la variable de instancia mBotonSiguiente:

mBotonSiguiente.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mPreguntaActual = mPreguntaActual + 1; if (mPreguntaActual == mBancoDePreguntas.length) { mPreguntaActual = 0;

}

actualizarPregunta();

});

}

35) Agregue también el siguiente método privado:

private void verificarRespuesta(boolean botonOprimido) { boolean respuestaEsVerdadera = mBancoDePreguntas[mPreguntaActual].isVerdadera(); if (botonOprimido == respuestaEsVerdadera) { Toast.makeText(GeoActivity.this, R.string.texto_correcto, Toast.LENGTH_SHORT) .show();

} else { Toast.makeText(GeoActivity.this, R.string.texto_incorrecto, Toast.LENGTH_SHORT) .show();

}

}

36) Finalmente, modifique los manejadores de eventos de las variables mBotonCierto y mBotonFalso, para que invoquen al método verificarRespuesta(), pasándole como argumento el valor true y false, respectivamente. 37) Ejecute la aplicación y realice pruebas. 38) En Git Bash emita los siguientes comandos y analice el resultado de cada uno de ellos:

$ git status
$ git status

Ing. Jorge Luis Chuc López

5

$ git add . $ git status $ git commit –m “Muestra un conjunto de preguntas y las recorre con un botón siguiente” $ git status

39)

Ing. Jorge Luis Chuc López