Cómo usar una tipografía personalizada en Android

Muchas veces queremos utilizar en nuestras aplicaciones una fuente distinta de la predeterminada. ¿Cómo logramos esto? A continuación explicaremos cómo y utilizar una tipografía personalizada en Android en unos brevísimos pasos. En este primer tutorial veremos cómo cambiar la fuente mediante código y en la segunda parte veremos cómo crear una clase que herede de TextView que nos permita cambiar la tipografía desde el archivo xml.

Paso a paso

Utilizar una tipografía personalizada en Android consta de tres pasos:
  1. Importar la tipografía
  2. Crear una clase que gestione la tipografía
  3. Utilizar la tipografía

1. Importar la tipografía

Uno de los aspectos más ignorados por aquellos tutoriales sobre tipografía es la ubicación de las mismas. Todos los tutoriales dicen que deben copiarse los archivos de fuentes en la carpeta assets, pero nadie dice dónde debe estar esta carpeta. Pues bien, esta es la ruta en nuestro proyecto: carpetaProyecto/app/src/main/assets
Estructura de carpetas app/src/main/assets

Carpeta ‘assets’, dentro del directorio ‘main’

Archivos de fuentes en la carpeta assets/fonts

Fuentes dentro de la carpeta ‘fonts’

Para estar seguro de que colocas las fuentes en la carpeta correcta, en la pestaña Project, a la izquierda, cambia la vista del proyecto de Android a Project:
Lista desplegable en la esquina superior izquierda de la pestaña 'Project'

Cambiamos la vista del proyecto en la pestaña ‘Project’

Si vamos a tener más archivos en la carpeta assets, podemos crear, dentro de assets, la carpeta fonts (de hecho esto es lo recomendable) y poner aquí las fuentes.

2. Crear una clase que gestione la tipografía

No debemos obtener la tipografía directamente porque en algunos dispositivos (antiguos) puede producir fugas de memoria ya que cargan la fuente una y otra vez. (Aquí se trata el tema: https://code.google.com/p/android/issues/detail?id=9904). Para evitar esto, vamos a crear una clase que gestione su obtención. Crea la siguiente clase en tu proyecto: TypefacesUtils.java

3. Utilizar la tipografía

Si no hubiéramos querido seguir el paso anterior, el método para cambiar la tipografía la tipografía de una vista es setTypefaces(): Pero si hemos implementado la clase TypefacesUtils, lo haremos de la siguiente manera: Nota que el segundo parámetro es la ruta a la fuente a partir de la carpeta assets, sin empezar por barra. Esa barra puede darnos más de un dolor de cabeza. Pero ¿cómo funciona TypefacesUtils? ¿Qué hemos hecho realmente? Esta clase realiza lo siguiente: para empezar dispone de una Hashtable. Cuando pedimos una fuente con el método TypefacesUtils.get(), si es la primera vez, la Hashtable estará vacía, por lo que la obtiene de la carpeta assets y la guarda en la Hashtable utilizando la ruta indicada como clave. La próxima vez que llamemos al método pidiendo la misma fuente, comprobará que en la Hashtable ya hay una fuente guardada para la ruta que hemos especificado por lo que, en lugar de volver a crearla desde assets, la tomará de la tabla, ahorrándose esa operación. Otro pequeño asunto al que tenemos que hacer referencia es una optimización del uso de la memoria. ¿A qué nos referimos? A no usar recursos cuando no es necesario hacerlo. ¿Para qué vamos a volver a asignar la tipografía a una vista que ya la tiene asignada? Es un desperdicio de memoria. Para evitar esto solo tenemos que comprobar antes de asignar la tipografía, si la vista ya la tiene asignada mediante el siguiente código: Y este sería el resultado:
Muestra de fuentes: negrita normal y negrita con la tipografía DejaVuSans-Bold

El primer TextView solo usa el atributo ‘bold’, mientras que al segundo le hemos asignado la tipografía ‘DejaVuSans-Bold

0 Comentarios

Contesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

©2024 Codictados Comunidad libre para el aprendizaje de codigo Online

o

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

o

Create Account