Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Información general
A partir del nivel de API 26, Android SDK permite que las fuentes se traten como recursos, al igual que los diseños o los dibujables. La Biblioteca de soporte técnico de Android 26 NuGet volverá a importar las nuevas API de fuente a las aplicaciones que tienen como destino el nivel de API 14 o superior.
Después de tener como destino api 26 o instalar la biblioteca de soporte técnico de Android v26, hay dos maneras de usar fuentes en una aplicación Android:
- Empaquetar la fuente como un recurso de Android: esto garantiza que la fuente siempre está disponible para la aplicación, pero aumentará el tamaño del APK.
- Descargar las fuentes : Android también admite la descarga de una fuente de un proveedor de fuentes. El proveedor de fuentes comprueba si la fuente ya está en el dispositivo. Si es necesario, la fuente se descargará y almacenará en caché en el dispositivo. Esta fuente se puede compartir entre varias aplicaciones.
Las fuentes similares (o una fuente que puede tener varios estilos diferentes) se pueden agrupar en familias de fuentes. Esto permite a los desarrolladores especificar determinados atributos de la fuente, como su peso, y Android seleccionará automáticamente la fuente adecuada de la familia de fuentes.
La biblioteca de soporte técnico de Android v26 devolverá compatibilidad con fuentes a nivel de API 26. Al dirigirse a los niveles de API anteriores, es necesario declarar el app
espacio de nombres XML y asignar un nombre a los distintos atributos de fuente mediante el android:
espacio de nombres y el app:
espacio de nombres. Si solo se usa el android:
espacio de nombres, las fuentes no se mostrarán los dispositivos que ejecutan el nivel de API 25 o menos. Por ejemplo, este fragmento de código XML declara un nuevo recurso de familia de fuentes que funcionará en el nivel de API 14 y versiones posteriores:
<?xml version="1.0" encoding="utf-8"?>
<font-family
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/sourcesanspro_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/sourcesanspro_regular"
app:fontStyle="normal"
app:fontWeight="400" />
</font-family>
Siempre que las fuentes se proporcionen a una aplicación Android de una manera adecuada, se pueden aplicar a un widget de interfaz de usuario estableciendo el fontFamily
atributo . Por ejemplo, el fragmento de código siguiente muestra cómo mostrar una fuente en un control TextView:
<TextView
android:text="The quick brown fox jumped over the lazy dog."
android:fontFamily="@font/sourcesanspro_regular"
app:fontFamily="@font/sourcesanspro_regular"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
En esta guía se describe primero cómo usar fuentes como un recurso de Android y, a continuación, pasar a analizar cómo descargar fuentes en tiempo de ejecución.
Fuentes como un recurso
Empaquetar una fuente en un APK de Android garantiza que siempre está disponible para la aplicación. Un archivo de fuente (ya sea un . TTF o . El archivo OTF) se agrega a una aplicación de Xamarin.Android como cualquier otro recurso, copiando archivos en un subdirectorio en la carpeta Resources de un proyecto de Xamarin.Android. Los recursos de fuentes se conservan en un subdirectorio de fuente de la carpeta Resources del proyecto.
Nota:
Las fuentes deben tener una acción de compilación de AndroidResource o no se empaquetarán en el APK final. El IDE debe establecer automáticamente la acción de compilación.
Cuando hay muchos archivos de fuente similares (por ejemplo, la misma fuente con diferentes pesos o estilos), es posible agruparlos en una familia de fuentes.
Familias de fuentes
Una familia de fuentes es un conjunto de fuentes que tienen diferentes pesos y estilos. Por ejemplo, puede haber archivos de fuente independientes para fuentes en negrita o cursiva. La familia de fuentes se define mediante font
elementos de un archivo XML que se mantiene en el directorio Resources/font . Cada familia de fuentes debe tener su propio archivo XML.
Para crear una familia de fuentes, agregue primero todas las fuentes a la carpeta Resources/font . A continuación, cree un nuevo archivo XML en la carpeta font de la familia de fuentes. El nombre del archivo XML no tiene afinidad ni relación con las fuentes a las que se hace referencia; el archivo de recursos puede ser cualquier nombre de archivo de recursos de Android legal. Este archivo XML tendrá un elemento raíz font-family
que contenga uno o varios font
elementos. Cada font
elemento declara los atributos de una fuente.
El siguiente XML es un ejemplo de una familia de fuentes para la fuente Sources Sans Pro que define muchos pesos de fuente diferentes. Esto se guarda como archivo en la carpeta Resources/font denominada sourcesanspro.xml:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/sourcesanspro_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/sourcesanspro_regular"
app:fontStyle="normal"
app:fontWeight="400" />
<font android:font="@font/sourcesanspro_bold"
android:fontStyle="normal"
android:fontWeight="800"
app:font="@font/sourcesanspro_bold"
app:fontStyle="normal"
app:fontWeight="800" />
<font android:font="@font/sourcesanspro_italic"
android:fontStyle="italic"
android:fontWeight="400"
app:font="@font/sourcesanspro_italic"
app:fontStyle="italic"
app:fontWeight="400" />
</font-family>
El fontStyle
atributo tiene dos valores posibles:
- normal : una fuente normal
- cursiva : una fuente cursiva
El fontWeight
atributo corresponde al atributo CSS font-weight
y hace referencia al grosor de la fuente. Se trata de un valor en el intervalo de 100 - 900. En la lista siguiente se describen los valores comunes de peso de fuente y su nombre:
- Fino – 100
- Extra Light – 200
- Luz – 300
- Normal – 400
- Medio – 500
- Semi negrita – 600
- Negrita : 700
- Negrita adicional : 800
- Negro – 900
Una vez definida una familia de fuentes, se puede usar mediante declaración estableciendo los fontFamily
atributos , textStyle
y fontWeight
en el archivo de diseño. Por ejemplo, el fragmento de código XML siguiente establece una fuente de 600 pesos (normal) y un estilo de texto cursiva:
<TextView
android:text="Sans Source Pro semi-bold italic, 600 weight, italic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/sourcesanspro"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:fontWeight="600"
android:textStyle="italic"
/>
Asignación de fuentes mediante programación
Las fuentes se pueden establecer mediante programación mediante el Resources.GetFont
método para recuperar un Typeface
objeto . Muchas vistas tienen una TypeFace
propiedad que se puede usar para asignar la fuente al widget. Este fragmento de código muestra cómo establecer mediante programación la fuente en un control TextView:
Android.Graphics.Typeface typeface = this.Resources.GetFont(Resource.Font.caveat_regular);
textView1.Typeface = typeface;
textView1.Text = "Changed the font";
El GetFont
método cargará automáticamente la primera fuente dentro de una familia de fuentes. Para cargar una fuente que coincida con un estilo específico, use el Typeface.Create
método . Este método intentará cargar una fuente que coincida con el estilo especificado. Por ejemplo, este fragmento de código intentará cargar un objeto en negrita Typeface
de una familia de fuentes definida en Recursos o fuentes:
var typeface = Typeface.Create("<FONT FAMILY NAME>", Android.Graphics.TypefaceStyle.Bold);
textView1.Typeface = typeface;
Descargar fuentes
En lugar de empaquetar fuentes como un recurso de aplicación, Android puede descargar fuentes desde un origen remoto. Esto tendrá el efecto deseable de reducir el tamaño del APK.
Las fuentes se descargan con la ayuda de un proveedor de fuentes. Se trata de un proveedor de contenido especializado que administra la descarga y el almacenamiento en caché de fuentes en todas las aplicaciones del dispositivo. Android 8.0 incluye un proveedor de fuentes para descargar fuentes del repositorio de fuentes de Google. Este proveedor de fuentes predeterminado se devuelve al nivel de API 14 con la biblioteca de soporte técnico de Android v26.
Cuando una aplicación realiza una solicitud de una fuente, el proveedor de fuentes comprobará primero si la fuente ya está en el dispositivo. Si no es así, intentará descargar la fuente. Si no se puede descargar la fuente, Android usará la fuente predeterminada del sistema. Una vez descargada la fuente, está disponible para todas las aplicaciones del dispositivo, no solo la aplicación que realizó la solicitud inicial.
Cuando se realiza una solicitud para descargar una fuente, la aplicación no consulta directamente al proveedor de fuentes. En su lugar, las aplicaciones usarán una instancia de la FontsContract
API (o si FontsContractCompat
se usa la biblioteca de soporte técnico 26).
Android 8.0 admite la descarga de fuentes de dos maneras diferentes:
- Declarar fuentes descargables como un recurso : una aplicación puede declarar fuentes descargables en Android a través de archivos de recursos XML. Estos archivos contendrán todos los metadatos que Android necesita para descargar de forma asincrónica las fuentes cuando se inicie la aplicación y almacenarlas en caché en el dispositivo.
- Mediante programación : las API del nivel de API de Android 26 permiten a una aplicación descargar las fuentes mediante programación, mientras se ejecuta la aplicación. Las aplicaciones crearán un
FontRequest
objeto para una fuente determinada y pasarán este objeto a laFontsContract
clase .FontsContract
toma yFontRequest
recupera la fuente de un proveedor de fuentes. Android descargará sincrónicamente la fuente. Un ejemplo de creación de unFontRequest
se mostrará más adelante en esta guía.
Independientemente del enfoque que se use, los archivos de recursos que se deben agregar a la aplicación Xamarin.Android antes de que se puedan descargar las fuentes. En primer lugar, las fuentes deben declararse en un archivo XML en el directorio Resources/font como parte de una familia de fuentes. Este fragmento de código es un ejemplo de cómo descargar fuentes de la colección de código abierto Google Fonts mediante el proveedor de fuentes predeterminado que viene con Android 8.0 (o Biblioteca de soporte técnico v26):
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fontProviderAuthority="com.google.android.gms.fonts"
android:fontProviderPackage="com.google.android.gms"
android:fontProviderQuery="VT323"
android:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="VT323"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
>
</font-family>
El font-family
elemento contiene los atributos siguientes, declarando la información que Android requiere para descargar las fuentes:
- fontProviderAuthority : la autoridad del proveedor de fuentes que se usará para la solicitud.
- fontPackage : el paquete del proveedor de fuentes que se usará para la solicitud. Se usa para comprobar la identidad del proveedor.
- fontQuery : es una cadena que ayudará al proveedor de fuentes a localizar la fuente solicitada. Los detalles de la consulta de fuentes son específicos del proveedor de fuentes. La
QueryBuilder
clase de la aplicación de ejemplo Fuentes descargables proporciona información sobre el formato de consulta de fuentes de la colección de código abierto Google Fonts. - fontProviderCerts: matriz de recursos con la lista de conjuntos de hash para los certificados con los que se debe firmar el proveedor.
Una vez definidas las fuentes, puede ser necesario proporcionar información sobre los certificados de fuente implicados en la descarga.
Certificados de fuente
Si el proveedor de fuentes no está preinstalado en el dispositivo o si la aplicación usa la Xamarin.Android.Support.Compat
biblioteca, Android requiere los certificados de seguridad del proveedor de fuentes. Estos certificados se mostrarán en un archivo de recursos de matriz que se mantiene en el directorio Resources/values .
Por ejemplo, el siguiente XML se denomina Resources/values/fonts_cert.xml y almacena los certificados para el proveedor de fuentes de Google:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="com_google_android_gms_fonts_certs">
<item>@array/com_google_android_gms_fonts_certs_dev</item>
<item>@array/com_google_android_gms_fonts_certs_prod</item>
</array>
<string-array name="com_google_android_gms_fonts_certs_dev">
<item>
MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
</item>
</string-array>
<string-array name="com_google_android_gms_fonts_certs_prod">
<item>
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
</item>
</string-array>
</resources>
Con estos archivos de recursos implementados, la aplicación es capaz de descargar las fuentes.
Declarar fuentes descargables como recursos
Al enumerar las fuentes descargables en el AndroidManifest.XML, Android descargará de forma asincrónica las fuentes cuando se inicie la aplicación por primera vez. La fuente se muestra en un archivo de recursos de matriz, similar a esta:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="downloadable_fonts" translatable="false">
<item>@font/vt323</item>
</array>
</resources>
Para descargar estas fuentes, deben declararse en AndroidManifest.XML agregando meta-data
como elemento secundario del application
elemento. Por ejemplo, si las fuentes descargables se declaran en un archivo de recursos en Resources/values/downloadable_fonts.xml, este fragmento de código tendría que agregarse al manifiesto:
<meta-data android:name="downloadable_fonts" android:resource="@array/downloadable_fonts" />
Descargar una fuente con las API de fuentes
Es posible descargar mediante programación una fuente mediante la creación de instancias de un FontRequest
objeto y pasarla al FontContractCompat.RequestFont
método . El FontContractCompat.RequestFont
método comprobará primero si la fuente existe en el dispositivo y, si es necesario, consultará de forma asincrónica el proveedor de fuentes e intentará descargar la fuente de la aplicación. Si FontRequest
no puede descargar la fuente, Android usará la fuente predeterminada del sistema.
Un FontRequest
objeto contiene información que usará el proveedor de fuentes para localizar y descargar una fuente. Un FontRequest
requiere cuatro fragmentos de información:
- Entidad de proveedor de fuentes: la autoridad del proveedor de fuentes que se usará para la solicitud.
- Paquete de fuentes: el paquete del proveedor de fuentes que se va a usar para la solicitud. Se usa para comprobar la identidad del proveedor.
- Consulta de fuentes: se trata de una cadena que ayudará al proveedor de fuentes a localizar la fuente solicitada. Los detalles de la consulta de fuentes son específicos del proveedor de fuentes. Los detalles de la cadena son específicos del proveedor de fuentes. La
QueryBuilder
clase de la aplicación de ejemplo Fuentes descargables proporciona información sobre el formato de consulta de fuentes de la colección de código abierto Google Fonts. - Certificados de proveedor de fuentes: matriz de recursos con la lista de conjuntos de hash para los certificados con los que se debe firmar el proveedor.
Este fragmento de código es un ejemplo de creación de instancias de un nuevo FontRequest
objeto:
FontRequest request = new FontRequest("com.google.android.gms.fonts", "com.google.android.gms", <FontToDownload>, Resource.Array.com_google_android_gms_fonts_certs);
En el fragmento de código FontToDownload
anterior se trata de una consulta que ayudará a la fuente de la colección de código abierto google Fonts.
Antes de pasar al FontRequest
FontContractCompat.RequestFont
método , hay dos objetos que se deben crear:
FontsContractCompat.FontRequestCallback
: se trata de una clase abstracta que debe extenderse. Es una devolución de llamada que se invocará cuandoRequestFont
finalice. Una aplicación de Xamarin.Android debe subclaseFontsContractCompat.FontRequestCallback
e invalidar yOnTypefaceRequestFailed
OnTypefaceRetrieved
, lo que proporciona las acciones que se deben realizar cuando se produce un error en la descarga o se realiza correctamente, respectivamente.Handler
: se trata de un objetoHandler
que se usará paraRequestFont
descargar la fuente en un subproceso, si es necesario. Las fuentes no deben descargarse en el subproceso de la interfaz de usuario.
Este fragmento de código es un ejemplo de una clase de C# que descargará de forma asincrónica una fuente de la colección de código abierto de Google Fonts. Implementa la FontRequestCallback
interfaz y genera un evento de C# cuando FontRequest
ha finalizado.
public class FontDownloadHelper : FontsContractCompat.FontRequestCallback
{
// A very simple font query; replace as necessary
public static readonly String FontToDownload = "Courgette";
Android.OS.Handler Handler = null;
public event EventHandler<FontDownloadEventArg> FontDownloaded = delegate
{
// just an empty delegate to avoid null reference exceptions.
};
public void DownloadFonts(Context context)
{
FontRequest request = new FontRequest("com.google.android.gms.fonts", "com.google.android.gms",FontToDownload , Resource.Array.com_google_android_gms_fonts_certs);
FontsContractCompat.RequestFont(context, request, this, GetHandlerThreadHandler());
}
public override void OnTypefaceRequestFailed(int reason)
{
base.OnTypefaceRequestFailed(reason);
FontDownloaded(this, new FontDownloadEventArg(null));
}
public override void OnTypefaceRetrieved(Android.Graphics.Typeface typeface)
{
base.OnTypefaceRetrieved(typeface);
FontDownloaded(this, new FontDownloadEventArg(typeface));
}
Handler GetHandlerThreadHandler()
{
if (Handler == null)
{
HandlerThread handlerThread = new HandlerThread("fonts");
handlerThread.Start();
Handler = new Handler(handlerThread.Looper);
}
return Handler;
}
}
public class FontDownloadEventArg : EventArgs
{
public FontDownloadEventArg(Android.Graphics.Typeface typeface)
{
Typeface = typeface;
}
public Android.Graphics.Typeface Typeface { get; private set; }
public bool RequestFailed
{
get
{
return Typeface != null;
}
}
}
Para usar este asistente, se crea un nuevo FontDownloadHelper
y se asigna un controlador de eventos:
var fontHelper = new FontDownloadHelper();
fontHelper.FontDownloaded += (object sender, FontDownloadEventArg e) =>
{
//React to the request
};
fontHelper.DownloadFonts(this); // this is an Android Context instance.
Resumen
En esta guía se describen las nuevas API de Android 8.0 para admitir fuentes y fuentes descargables como recursos. Se ha explicado cómo insertar fuentes existentes en un APK y usarlas en un diseño. También se ha explicado cómo Android 8.0 admite la descarga de fuentes de un proveedor de fuentes, ya sea mediante programación o declarando los metadatos de fuente en los archivos de recursos.