La funzione Caratteri scaricabili consente alle API di richiedere i caratteri da un'applicazione provider anziché raggruppando file nell'app o consentendo all'app di scaricare i caratteri. La funzionalità Caratteri scaricabili è disponibile su dispositivi con l'API Android 14 e versioni successive tramite la libreria AndroidX Core.
I caratteri scaricabili offrono i seguenti vantaggi:
- Riduce le dimensioni dell'app, aumentando di conseguenza la percentuale di successo dell'installazione dell'app.
- Migliora l'integrità complessiva del sistema, in quanto più app possono condividere lo stesso carattere tramite una o il provider di servizi di terze parti. In questo modo si risparmiano dati cellulare, memoria e spazio su disco dell'utente. In questo modello, viene recuperato sulla rete quando necessario.
Come funzionano i caratteri scaricabili?
Un fornitore di caratteri è un'applicazione che recupera i caratteri e li memorizza nella cache localmente per consentire ad altre app richiedere e condividere i caratteri. La figura seguente illustra la procedura.
Nozioni di base
Puoi utilizzare la funzione Caratteri scaricabili nei seguenti modi, descritti in dettaglio" nelle sezioni successive:
- Utilizzo di Android Studio e Google Play Services
- In modo programmatico
- Utilizzare la libreria AndroidX Core
Utilizzare i caratteri scaricabili con Android Studio e Google Play Services
Puoi impostare l'applicazione in modo che scarichi i caratteri con Android Studio 3.0 o versioni successive. Per aiutarti iniziare a utilizzare le funzioni di Caratteri scaricabili, è possibile utilizzare il provider di caratteri di Google Play i servizi di machine learning.
- Nell'Editor layout, seleziona un
TextView
. Poi, in Attributi, Seleziona Famiglia di caratteri > Altri caratteri. . Viene visualizzata la finestra Risorse. - Nel menu Origine, seleziona Google Fonts.
- Nella casella Caratteri, seleziona un carattere sotto "Scaricabili". geografica specifica.
- Seleziona Crea carattere scaricabile e fai clic su OK.
Android Studio genera automaticamente i file XML pertinenti necessari per il rendering del carattere. correttamente nell'app.
Utilizza i caratteri scaricabili in modo programmatico
A partire da Android 8.0 (livello API 26), AndroidX Core offre il supporto completo per i caratteri scaricabili. Per ulteriori informazioni sull'uso della libreria AndroidX Core, consulta Sezione della libreria AndroidX Core per i caratteri scaricabili in questa pagina.
Per utilizzare la funzionalità Caratteri scaricabili in modo programmatico, interagisci con due classi chiave:
android.graphics.fonts.FontRequest
: questa classe consente di creare una richiesta relativa al carattere.FontsContractCompat
: questo corso ti consente di creare OggettoTypeface
in base a la richiesta di carattere.
L'app recupera i caratteri dal fornitore utilizzando l'API FontsContract
. Ciascuna
del fornitore ha il proprio insieme di limitazioni in merito alle versioni Android e al linguaggio di query che supporta. Per
per ulteriori informazioni sulle versioni Android e sul formato delle query, consulta le
documentazione.
Per scaricare un carattere, procedi nel seguente modo:
- Crea un'istanza della classe
android.graphics.fonts.FontRequest
per richiedere l'oggetto del provider. Per creare una richiesta, passa i seguenti parametri:- L'autorità del fornitore dei caratteri.
- Il pacchetto del provider di caratteri per verificare l'identità del provider.
- La query stringa del carattere. Per ulteriori informazioni sui formati delle query, vedi il tuo carattere documentazione del fornitore, ad esempio Google Fonts.
- Un elenco di set di hash per i certificati al fine di verificare l'identità del provider.
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs )
Java
FontRequest request = new FontRequest("com.example.fontprovider", "com.example.fontprovider", "my font", certs);
- Crea un'istanza del metodo
FontsContract.FontRequestCallback
. - Sostituisci il valore
onTypefaceRetrieved()
per indicare che la richiesta di carattere è stata completata. Fornisci come parametro il carattere recuperato. Puoi utilizzare questo metodo per impostare il carattere in base alle tue esigenze. Ad esempio, puoi impostare il carattere suTextView
. - Sostituisci il valore
onTypefaceRequestFailed()
per ricevere informazioni sugli errori nella procedura di richiesta dei caratteri. Per ulteriori informazioni sui codici di errore, consulta costanti dei codici di errore. - Chiama il metodo
FontsContract.requestFont()
per recuperare il carattere dal carattere o il provider di servizi di terze parti. Il metodo avvia un controllo per determinare se il carattere esiste nella cache. Se Il carattere non è disponibile localmente, viene chiamato il fornitore del carattere, recupera il carattere in modo asincrono e passa il risultato al callback. Trasmetti i seguenti parametri:- Un'istanza del
Context
corso - Un'istanza della classe
android.graphics.fonts.FontRequest
- Un callback per ricevere i risultati della richiesta di carattere
- Un gestore per il recupero dei caratteri in un thread
- Un'istanza del
Il seguente codice di esempio illustra la procedura generale per i caratteri scaricabili:
Kotlin
val request = FontRequest( "com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs ) val callback = object : FontsContract.FontRequestCallback() { override fun onTypefaceRetrieved(typeface: Typeface) { // Your code to use the font goes here. ... } override fun onTypefaceRequestFailed(reason: Int) { // Your code to deal with the failure goes here. ... } } FontsContract.requestFonts(context, request, handler, null, callback)
Java
FontRequest request = new FontRequest("com.example.fontprovider.authority", "com.example.fontprovider", "my font", certs); FontsContract.FontRequestCallback callback = new FontsContract.FontRequestCallback() { @Override public void onTypefaceRetrieved(Typeface typeface) { // Your code to use the font goes here. ... } @Override public void onTypefaceRequestFailed(int reason) { // Your code to deal with the failure goes here. ... } }; FontsContract.requestFonts(context, request, handler, null, callback);
Per ulteriori informazioni su come scaricare un carattere da un fornitore di caratteri, vedi DownloadableFonts di esempio.
Utilizzare i caratteri scaricabili con AndroidX Core
AndroidX Core fornisce supporto per la funzionalità Caratteri scaricabili sui dispositivi con Android
API 14 o versioni successive. La
androidx.core.provider
contiene le classi FontsContractCompat
e FontRequest
da implementare
il supporto della funzione Caratteri scaricabili compatibile con le versioni precedenti. Le classi AndroidX contengono metodi
simile ai metodi del framework e la procedura per scaricare i caratteri è simile a quella
descritto nella sezione di questa pagina
utilizzando caratteri scaricabili in modo programmatico.
Per scaricare i caratteri utilizzando AndroidX, importa FontsContractCompat
e
FontRequest
classi dal pacchetto androidx.core.provider
. Crea
di queste classi invece che
FontsContract
e
android.graphics.fonts.FontRequest
classi framework.
Aggiungi dipendenza AndroidX Core
Per utilizzare i corsi FontsContractCompat
e FontRequest
, devi modificare
le dipendenze classpath del progetto dell'app all'interno dell'ambiente di sviluppo.
Per aggiungere AndroidX Core al progetto dell'applicazione, aggiungi la seguente dipendenza al parametro
File build.gradle
:
Alla moda
dependencies { ... implementation "androidx.core:core-ktx:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
Utilizza i caratteri scaricabili come risorse in XML
Android 8.0 (livello API 26) e AndroidX Core offrono un modo più rapido e più conveniente per come risorsa personalizzata nel layout XML. Ciò significa che non è necessario raggruppare il carattere un asset. Puoi definire un carattere personalizzato per l'intero tema, in modo da velocizzare l'usabilità per più spesso e stili, ad esempio grassetto, medio o leggero, se forniti.
- Crea un nuovo file XML nella cartella
res/font
. - Aggiungi un elemento principale
<font-family>
e imposta gli attributi relativi al carattere, come mostrato nel seguente file XML di esempio: - Fai riferimento al file
@font/font_file_name
nel file XML di layout. Puoi anche utilizza lagetFont()
per recuperare il file in modo programmatico, comegetFont(R.font.font_file_name)
.
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" android:fontProviderAuthority="com.example.fontprovider.authority" android:fontProviderPackage="com.example.fontprovider" android:fontProviderQuery="example font" android:fontProviderCerts="@array/certs"> </font-family>
Pre-dichiarare i caratteri nel manifest
L'aumento artificiale del layout e il recupero delle risorse sono attività sincrone. Per impostazione predefinita, il primo tentativo "recupera caratteri" attiva una richiesta al fornitore del carattere e, di conseguenza, aumenta il primo layout nel tempo. Per evitare questo ritardo, puoi predichiarare i caratteri che devono essere recuperati nel file manifest. Una volta che il sistema ha recuperato il carattere dal provider, questo è immediatamente disponibile. Se carattere il recupero richiede più tempo del previsto, il sistema interrompe il processo di recupero e utilizza il valore predefinito .
Per pre-dichiarare i caratteri nel manifest, completa i seguenti passaggi:
- Crea un array di risorse in
res/values/arrays.xml
e dichiara i caratteri che che vuoi precaricare. - Utilizza un tag
meta-data
per dichiarare l'array di risorse nel file manifest.
res/values/arrays.xml <?xml version="1.0" encoding="utf-8"?> <resources> <array name="preloaded_fonts"> <item>@font/font1</item> <item>@font/font2</item> </array> </resources>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
Aggiungi certificati
Se un fornitore di caratteri non è preinstallato o se utilizzi la libreria AndroidX Core, dichiara i certificati con cui è firmato il provider di caratteri. Il sistema utilizza i certificati per verificare dell'identità del provider di caratteri.
Per aggiungere certificati, segui questi passaggi:
- Crea un array di stringhe con i dettagli del certificato. Per ulteriori informazioni sul certificato fai riferimento alla documentazione del tuo fornitore di caratteri.
- Imposta l'attributo
fontProviderCerts
sull'array.
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
Caratteri scaricabili in Compose
A partire da Compose 1.2-alpha07, puoi usare l'API Downloadable Fonts nell'app Compose per scaricare Google Fonts in modo asincrono e utilizzali nella tua app. Per ulteriori informazioni, consulta documentazione di Composeable Fonts.