Por omision, en todos los dispositivos Android vienen cargadas tres fuentes que podemos utilizar libremente en nuestras aplicaciones:
- Sans
- Serif
- Monospace
Para cambiar la fuente utilizada en un texto podemos indicarlo directamente en el archivo xml que lo define. Por ejemplo, en nuestra aplicación, abrimos el fichero \res\layout\main.xml y en la definición del TextView incluimos la linea :
android:typeface=”sans” de forma que quede como sigue:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:typeface="sans"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:typeface="sans"
/>
Para probar con las diferentes fuentes definimos varias entradas en nuestro archivo strings.xml (por ejemplo ‘helloSans’, ‘helloSerif’ y ‘helloMonospace’) y a cada uno le pongo un contenido distinto. Después en el fichero main.xml defino un TextView por cada uno de ellos con una fuente distinta:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/helloSans"
android:typeface="sans"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/helloSerif"
android:typeface="serif"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/helloMonospace"
android:typeface="monospace"
/>
</LinearLayout>
Al ejecutar la aplicación veremos los diferentes tipos de letra aplicados a cada uno de los campos:
Si queremos aplicar una fuente diferente a las que vienen por defecto en Android tendremos que conseguir el fichero .ttf (true type font) correspondiente (en la red existen multiples páginas desde la que podes descargar archivos de este tipo).
Una vez conseguido debemos crear la carpeta ‘fonts’ dentro de ‘assets’ en nuestro proyecto y, dentro de ella copiaremos nuestro fichero .ttf. Yo haré la prueba con la fuente jokerman.ttf.
Defino una nueva entrada en strings.xml llamada ‘helloPoker’ y un nuevo campo TextView en main.xml, sin ponerle el atributo typeface, pero añadiendo un identificador para poder manejarlo desde nuestro programa. Debe quedar así:
<TextView
android:id="@+id/poker"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/helloPoker"
/>
Para asignar la nueva fuente al campo de texto deberemos empezar a tocar código fuente del fichero ‘AndroideNovatoActivity.java’ de la carpeta ‘src’ de forma que quede como sigue:
01 | public class AndroideNovatoActivity extends Activity { |
02 | /** Called when the activity is first created. */ |
03 | @Override |
04 | public void onCreate(Bundle savedInstanceState) { |
05 | super .onCreate(savedInstanceState); |
06 | setContentView(R.layout.main); |
07 | |
08 | // Defino la nueva fuente cargandola desde el fichero .ttf |
09 | Typeface miPropiaTypeFace = Typeface.createFromAsset(getAssets(), "fonts/jokerman.ttf" ); |
10 | |
11 | // Cargo en una variable tipo TextView el campo de la pantalla |
12 | // identificado con el id poker. |
13 | |
14 | TextView helloPoker = (TextView)findViewById(R.id.poker); |
15 | |
16 | // Le aplico el nuevo tipo de letra |
17 | helloPoker.setTypeface(miPropiaTypeFace); |
18 |
19 | } |
20 | } |
Si os aparecen algunas líneas subrayadas en rojo significa que debemos importar las clases corresondientes para manejar ese tipo de datos. Para solucionar este problema pulsamos a la vez las teclas Ctrl-Shift y la letra ‘O’ y Eclipse incluirá las líneas que hacen falta automáticamente al principio del programa.
Al ejecutar la aplicación veremos el nuevo campo con la nueva fuente cargada:
El uso de fuentes personalizadas tiene sus problemas como el tamaño que ocupan o posibles desajustes según la resolución del dispositivo en el que se utilice. Asimismo debemos tener en cuenta si la fuente utilizada permite su libre utilización o está sujeta a algún tipo de restricción legal.
No hay comentarios:
Publicar un comentario