6.7.1.-
Programación en Android – Actividad de Ayuda
En
este capítulo crearemos nuestra actividad de ayuda
(ActividadAyuda) que será la encargada de mostrar la ayuda del
juego. En el diseño de esta actividad trabajaremos con
recursos raw y además
crearemos un textview con scroll, entre otras cosas.
El diseño básico que
tendrá esta actividad será el siguiente:
Y
viéndolo con más detalle, tendremos que crear o alterar
el layout que tenemos creado (ayuda.xml) para incluir los siguientes
elementos:
Bien,
comenzamos editando el fichero ayuda.xml,
y creamos un LinearLayout
que será el que contenga el resto de los recursos u objetos
que añadiremos. Después crearemos la cabecera, que
será un RelativeLayout
que
contendrá las dos imágenes y el textview con el título.
Lo haremos de forma similar a cuando creamos el diseño del
menu.xml, con
lo que no me pararé mucho en estos detalles (mirar si es
necesario los anteriores capítulos). Además, añadimos
la misma imagen de fondo que utilizamos para el menú para que
sea utilizada en este Layout y mantener una consistencia visual.
También
debemos crear una serie de recursos, que serán particulares de
este layout, y otros que reciclaremos
del layout creado para el menú, aunque sería mejor
crear unos propios, pero así se simplifica. Los recursos que
reutilizaremos son los referentes al tamaño, color, dimensión
del TextView
de la ayuda y de las imágenes.
Cuando esté finalizada la
cabecera pasamos al TextView que mostrará el texto de ayuda, y
aquí es dónde nos pararemos a ver los pasos con más
detenimiento por ser nuevos.
Necesitaremos
una serie de recursos de dimensión (en el fichero
dimension.xml
o dimen.xml
dentro de la carpeta values),
que serán los siguientes:
Identificador
dimensión
|
Valor
|
Descripción
|
dim_Margen_Texto_Ayuda
|
20 dp
|
(Padding).
Margen que se deja sin
texto dentro del contenedor textview.
|
dim_Texto_Ayuda
|
7pt
|
Tamaño
del texto.
|
dim_Desv_Texto_Ayuda
|
25dp
|
Tamaño
del desvanecimiento (fading) del texto.
|
dim_Margen_Drawable_Texto_Ayuda
|
5dp
|
Margen
que se deja para el drawable del fondo del TextView de la ayuda.
|
Además
de estas dimensiones, vamos a crear una nueva carpeta dentro de res,
esta carpeta le llamaremos raw,
y contendrá recursos sin
formato, en nuestro caso el texto de la ayuda.
Dentro
de la carpeta raw crearemos
un fichero llamado ayuda.txt,
y
en él escribiremos unos párrafos con la ayuda del
juego, de momento podéis copiar lo siguiente:
Correcto
o Incorrecto
El
objetivo del juego es el de acertar el mayor número de
respuestas en el mínimo tiempo.
Se
te presentará una operación matemática y
debes evaluar si es correcta o incorrecta pulsando el botón
correspondiente.
Tienes
un tiempo para responder a las preguntas, procura no equivocarte y
contestar el mayor número de ellas de forma correcta.
Correo
del creador: pafh.software@gmail.com
|
Nota:
Aunque lo correcto sería crear este texto como un recurso
string, ya que nos facilitaría más tarde la
localización
del programa además de poder utilizar etiquetas HTML, pero se
hace de esta forma para ver como se trabaja con recursos raw.
Es posible que no se os muestren
bien los acentos, en ese caso yo he recurrido a crear el fichero de
texto con el NotePad y después lo he añadido a los
recursos. Además el Notepad da la opción de guardarlo
con varias codificaciones, por si queréis experimentar.
También
podemos crear el fichero de texto con cualquier otro editor y
copiarlo después dentro de la carpeta raw.
Podemos
cambiar la apariencia del texto cambiando sus atributos mediante
textStyle,
con lo que lo podemos hacer en negrita o en cursiva. Además
mediante el uso del atributo linksClickable
(a true)
y el atributo autoLink
(a all)
podemos
hacer que se enlace automáticamente los números de
teléfono, direcciones web, direcciones de email mostrados en
el TextView
con las aplicaciones android correspondientes (Marcador, navegador,
email, etc.)
Ahora
que tenemos los recursos necesarios, añadimos el textView
después del RelativeLayout
que va en la cabecera, y ponemos los siguientes
atributos/propiedades/valores:
Propiedad
|
Valor
|
Descripción
|
Id
|
@+id/texto_de_la_ayuda
|
Identificador
|
Drawable
Padding
|
@dimen/dim_Margen_Drawable_Texto_Ayuda
|
Margen
que se deja para el drawable del textview.
|
Fading
Edge
|
Vertical
|
Desvanecimiento
del borde.
|
Fading
Edge Lenght
|
@dimen/dim_desv_Texto_Ayuda
|
Tamaño
del desvanecimiento.
|
Padding
|
@dimen/dim_Margen_Texto_Ayuda
|
Tamaño
del margen desde el borde del textview hasta el texto.
|
Scrollbars
|
Vertical
|
Barras
de desplazamiento. (Vertical y/o horizontal)
|
isScrollContainer
|
true
|
Indica
que tiene scroll.
|
Scrollbar
Style
|
outsideOverlay
|
En
el borde de la vista y por encima.
|
Links
clickable
|
true
|
Hace
que al pinchar sobre emails, direcciones web, números de
teléfono, etc., se llame a la aplicación
correspondiente.
|
Autolink
|
all
|
Para
que haga enlaces automáticamente con los números de
teléfono, email, etc.
|
Text
Color
|
@android:color/white
|
Color
del texto, cogemos un recurso del sistema.
|
Text
Size
|
@dimen/dim_Texto_Ayuda
|
Tamaño
del texto.
|
Layout
height
|
fill_parent
|
Alto
de la vista/widget. (Que se ajuste al layout Padre).
|
Layout
width
|
fill_parent
|
Ancho
de la vista/widget. (Que se ajuste al layout Padre)
|
Accediendo a ficheros
Hay
una cosa que tenemos que tener en cuenta al trabajar con los ficheros
de nuestra aplicación, y es que cada aplicación de
Android
tiene su propio directorio privado para guardar los ficheros de la
aplicación, asique además de todas las clases
habituales para trabajar con ficheros (File,
Stream)
se puede acceder
a los ficheros y carpetas privadas de la aplicación utilizando
los siguientes métodos de contexto (Context):
fileList(),
getFilesDir(), getDir(), openFileInput(), openFileOutput(),
deleteFile() y getFileStreamPath(),
que nos ayudarán en caso de tener que crear ficheros o
bajarlos de internet.
Ahora
vamos a modificar el código de la ActividadAyuda.java.
Para
leer datos de tipo string desde un fichero, podemos utilizar el
método openRawResource()
de la clase Resources,
por ejemplo:
InputStream
iFichero= getResources().openRawResource(R.raw.ayuda);
|
Y
ahora que ya tenemos un objeto del tipo InputStream
ya podemos leer el fichero línea a línea o byte a byte
y crear una cadena.
En este caso se podría hacer
un método como el siguiente:
private
String
cargarFicherodeAyuda()
{
//Por
si nos da un error.
try
{
//Cargamos
el fichero
InputStream
iFichero = getResources().openRawResource(R.raw.ayuda);
StringBuffer
sBuffer = new
StringBuffer();
DataInputStream
datosIO = new
DataInputStream(iFichero);
String
strLinea = null;
//Cargamos
linea a linea el fichero.
while
((strLinea = datosIO.readLine()) != null)
{
//Y
la añadimos al stringbuffer
sBuffer.append(strLinea
+ "\n");
}
//Se
cierran los accesos.
datosIO.close();
iFichero.close();
//Si
todo va bien retorna la cadena
return
sBuffer.toString();
}
catch
(Exception
e)
{
if
(VALOR_DEBUG)
Log.v(LOG_GLOBAL,
"Error
cargando Fichero de ayuda", e);
Log.e(LOG_GLOBAL,
"Error cargando fichero de
ayuda", e);
}
//En
caso de tener algún error retornamos null.
return
null;
}
|
Y lo llamaríamos desde el
método onCreate de ActividadAyuda, a la que le
añadiremos el siguiente código:
String
texto;
texto
= cargarFicherodeAyuda();
//Ahora
actualizamos el control TextView con el texto
TextView
tv_textoayuda = (TextView)findViewById(R.id.texto_de_la_ayuda);
tv_textoayuda.setText(texto);
|
Ya podemos ejecutar nuestra
aplicación, y podremos ver nuestro texto de ayuda con scroll y
enlaces automáticos.
Ver.
1.0 – Revisión 12/03/2012
No hay comentarios:
Publicar un comentario