viernes, 13 de enero de 2012

6.0.-PA-Diseñando un framework para nuestra aplicacion


6.0.- Programación en Android:  Diseñando un framework para nuestra aplicación.

  A partir de este capítulo comenzaremos con el desarrollo de un pequeño proyecto,  no muy complicado, pero que nos servirá para aprender varias funciones que tiene el SDK de Android, así como a ver el proceso de creación de una aplicación desde el concepto incial hasta su publicación en el market, por poner un ejemplo.
  La aplicación que vamos a desarrollar es un pequeño y simple juego, el concepto del juego no es muy relevante ya que sólo es una pequeña parte de nuestra aplicación, y de momento lo dejaré en suspense, aunque vereis pistas a medida que hagamos las pantallas de las diversas actividades.  A lo largo de su desarrollo aprenderemos a hacer animaciones simples, utilizar listas, coger la entrada del teclado/pantalla, guardar el estado de la aplicación, ventanas de diálogo y mensajes, etc..., volveremos sobre nuestros pasos y modificaremos código ya hecho para implementar nuevas funciones, o formas distintas de realizarlas.
  En este primer capítulo diseñaremos el framework para nuestra aplicación, y aunque sea muy sencillo también nos puede servir de base para futuros proyectos.
  Si analizamos algún juego del market veremos que, normalmente, todos comienzan con una pantalla inicial, en la que aparece el nombre del juego o aplicación, alguna imagen y los datos sobre el autor o desarrollador.  Esta ventana se suele llamar splash, y  suele aparecer durante un período breve de tiempo para a continuación pasar de forma automática a otra actividad, una vez hecho esto, no se volverá a mostrar hasta la próxima ejecución del juego.
  Esta segunda actividad sería el menú principal del juego o aplicación.  En este menú se mostraría un titular, y despues una lista de opciones o de botones con los que enlazaríamos con las otras partes de la aplicación.
  ¿Que necesitamos mostrar en el menú?  Pues lo normal sería una opción para ir a jugar, otra para configurarlo, una con las puntuaciones y otra opción con la ayuda, cada una con su actividad correspondiente.  Podemos poner más a mayores o suprimir alguna según el caso a utilizar, pero como esqueleto básico para nuestro framework es suficiente.  En nuestro framework, he añadido una opción a mayores, que no aparece en el menú, y es una actividad de salida.  Esta actividad sería llamada en caso de pulsar la tecla atrás desde el menu principal, ya que no volveríamos a mostrar la pantalla de splash en la salida, en su lugar mostraríamos esta otra actividad de salida.  En ella podríamos mostrar un mensaje de despedida, un anuncio, etc.
  En esta imagen vemos como quedaría el diseño de nuestro framework y de las actividades que necesitaríamos, cada una tendrá su propio layout.


  Como podemos observar necesitaríamos siete pantallas distintas para tener el interfaz de usuario completo, aunque podríamos carecer de la de salida.  Cada una de estas pantallas necesitará una activity.
  A lo largo del desarrollo del juego veremos que hay datos que van a ser globales, o que serán necesitados por varias actividades.  Una forma de hacer estos datos comunes y que puedan ser compartidos, es crear una clase base, derivada de android.app.Activity, que será la que contenga esos datos globales, y después hacer que las otras actividades sean derivadas de ésta.  Esta clase la llamaremos ActividadGlobal.  Veamos como serían entonces las actividades que necesitamos:

.- ActividadGlobal:  Será la clase base.  Tendrá las preferencias de la aplicación y valores o configuraciones que sean "globales".  Derivada de android.app.Activity.
.- ActividadSplash:  Implementará la ventana de splash.  Está derivada de ActividadGlobal.
.- ActividadMenu:  Contendrá el menú principal del juego.  Derivada de ActividadGlobal.
.- ActividadJuego:  Será la actividad que tendrá la pantalla de juego y que será el juego propiamente dicho.  Derivada de ActividadGlobal.
.- ActividadConfiguracion:  Pantalla de configuración de la aplicación.  Derivada de ActividadGlobal.
.- ActividadPuntuaciones:  Actividad con la pantalla dónde se mostrarán las mejores puntuaciones.  Derivada de ActividadGlobal.
.- ActividadAyuda:  Actividad que mostrará la ayuda del juego.  Derivada de ActividadGlobal.
.- ActividadSalida:  Actividad a mostrar cuándo salimos del juego, mostrará un mensaje de despedida, anuncios, etc.  Derivada de Actividad Global.

Veamos ahora con un poco más de detalle que se realizará en cada una de estas actividades:

Pantalla de Splash (Encapsulada con la clase ActividadSplash)
Es el punto de entrada a nuestra aplicación.  Esta pantalla haría lo siguiente:
-Mostraría el nombre y versión de nuestra aplicación o juego.
-Mostraría alguna imagen o gráfico relacionado con el juego, o no.
-Pasaría automáticamente a la pantalla del menú principal después de un lapso de tiempo.

Pantalla de Menú Principal (Encapsulada con la clase ActividadMenu)
Esta pantalla nos sirve para navegar entre las diversas opciones que nos da el juego.  Aparece después de la actividad de Splash, y en ella se requerirá que el usuario elija a dónde va a ir después.  En esta pantalla haríamos lo siguiente:
-Se mostraría automáticamente despues de la pantalla Splash.
-Permitiría al usuario elegir entre las opciones de Jugar, Configuración, Puntuaciones, Ayuda, e incluso Salir, en caso de querer implementarlo como opción.
-Mostraría algún gráfico de fondo e incluso podría sonar alguna musiquilla, etc.

Pantalla de Juego (Encapsulada con la clase ActividadJuego)
Esta pantalla mostraría el juego propiamente dicho.  Podría ser, por ejemplo:
-Mostrar una serie de preguntas o afirmaciones, en las que eligiríamos si son correctas o falsas.
-Controlar la entrada del usuario.
-Mostrar / Actualizar la puntuación.
-Controlar el tiempo de juego.
-Pedir un nombre en caso de hacer una puntuación alta.  Éste se enviará a la pantalla de puntuaciones.
-Cambiar a la pantalla de puntuaciones en caso de haber realizado una puntuación alta.
-Etc.

Pantalla de Configuración (Encapsulada con la clase ActividadConfiguracion)
En esta pantalla se configurarán algunas preferencias del juego, como pueden ser:
-Permitir escoger la orientación de la pantalla.
-Permitir configurar si se desea sonido.
-Etc.

Pantalla de Puntuaciones (Encapsulada con la clase ActividadPuntuaciones)
En esta pantalla se mostrarán las puntuaciones más altas obtenidas.  Podría además hacer alguna otra labor:
-Permitir la entrada del nombre o coger el que se le envía en caso de venir desde la pantalla de juego (*).
-Mostrar las puntuaciones más altas.
-Hacer uso de algún servidor de puntuaciones en internet, como scoreloop (*)
-Etc.

Pantalla de Ayuda (Encapsulada con la clase ActividadAyuda)
En esta pantalla se mostrará la ayuda del juego en una lista desplegable.
-Mostrar la ayuda y permitir que el usuario navegue por ella.
-Dar la opción de que el usuario envíe nuevas preguntas o sugerencias al desarrollador.
-Mostrar la información sobre el desarrollador y versión del programa.
-Etc.

Pantalla de Salida (Encapsulada con la clase ActividadSalida)
Esta ventana se mostrará en caso de que el usuario pulse en el dispositivo "atras" en la pantalla del menú principal.  Entre otras cosas podemos hacer:
-Mostrar un anuncio durante un lapso de tiempo.
-Mostrar un mensaje de despedida.
-Mostrar la opción de compra de nuestra aplicación.
-Mostrar otras aplicaciones que tenga el mismo desarrollador.
-Etc.

A partir de estas ideas, debemos comenzar a escribir el código para nuestra aplicación, añadir recursos de textos y de gráficos, crear los layouts para cada pantalla, implementar las clases anteriormente citadas, etc.

En el próximo capítulo comenzaremos a crear el esqueleto para el proyecto de nuestro juego e iremos creando algunos recursos.


Ver. 1.0 – Rev. 12-1-2012

No hay comentarios:

Publicar un comentario