Funkcja Czcionki do pobrania pozwala interfejsom API żądać czcionek z aplikacji dostawcy zamiast grupować pliki w aplikacji lub umożliwiać jej pobieranie. Czcionki do pobrania są dostępne na urządzeniach z interfejsem Android API w wersji 14 lub nowszej z biblioteką AndroidX Core.
Czcionki do pobrania zapewniają następujące korzyści:
- Pozwala to zmniejszyć rozmiar aplikacji, a tym samym zwiększyć liczbę instalacji.
- Poprawia ogólny stan systemu, ponieważ wiele aplikacji może używać tej samej czcionki za pośrednictwem dostawcy. W ten sposób oszczędzasz komórkową transmisję danych, oszczędzasz pamięć telefonu i miejsce na dysku użytkownika. W tym modelu czcionka jest w razie potrzeby pobierana przez sieć.
Jak działają czcionki do pobrania?
Dostawca czcionek to aplikacja, która pobiera czcionki i przechowuje je w pamięci podręcznej, aby inne aplikacje mogły żądać czcionek i je udostępniać. Poniższy rysunek przedstawia cały proces.
Podstawy
Z funkcji Czcionki do pobrania można korzystać na następujące sposoby, które zostały szczegółowo omówione w kolejnych sekcjach:
- Korzystanie z Android Studio i Usług Google Play
- Automatyzacja
- Korzystanie z biblioteki AndroidX Core
Używanie czcionek do pobrania w Android Studio i Usługach Google Play
W Android Studio 3.0 lub nowszym możesz skonfigurować pobieranie czcionek w aplikacji. Aby łatwiej zacząć korzystać z funkcji dostępnych do pobrania, możesz użyć dostawcy czcionek z usług Google Play.
- W Edytorze układu wybierz
TextView
. Następnie w sekcji Atrybuty wybierz fontFamily > Więcej czcionek. Pojawi się okno Zasoby. - W menu Źródło wybierz Google Fonts.
- W polu Czcionki wybierz czcionkę w obszarze „Do pobrania”.
- Wybierz Utwórz czcionkę do pobrania i kliknij OK.
Android Studio automatycznie generuje odpowiednie pliki XML, które są potrzebne do poprawnego renderowania czcionki w aplikacji.
Automatyczne korzystanie z czcionek do pobrania
Od Androida 8.0 (poziom interfejsu API 26) AndroidX Core w pełni obsługuje czcionki do pobrania. Więcej informacji o korzystaniu z biblioteki AndroidX Core znajdziesz w sekcji biblioteki Czcionki AndroidX Core do pobrania na tej stronie.
Aby automatycznie używać funkcji Czcionki do pobrania, użyj 2 kluczowych klas:
android.graphics.fonts.FontRequest
: ta klasa pozwala utworzyć żądanie czcionki.FontsContractCompat
: ta klasa pozwala utworzyć nowy obiektTypeface
na podstawie żądania czcionki.
Aplikacja pobiera czcionki od dostawcy czcionek za pomocą interfejsu API FontsContract
. Każdy dostawca ma własny zestaw ograniczeń dotyczących wersji Androida i języka zapytań, które obsługuje. Więcej informacji o wersjach Androida i formacie zapytania znajdziesz w dokumentacji dostawcy.
Aby pobrać czcionkę:
- Utwórz instancję klasy
android.graphics.fonts.FontRequest
, aby zażądać czcionki od dostawcy. Aby utworzyć żądanie, przekaż te parametry:- Uprawnienia dostawcy czcionek.
- Pakiet dostawcy czcionek do weryfikacji tożsamości dostawcy.
- Zapytanie w postaci ciągu znaków dotyczące czcionki. Więcej informacji o formatach zapytań znajdziesz w dokumentacji dostawcy czcionek, np. w usłudze Google Fonts.
- Lista zestawów haszy certyfikatów w celu weryfikacji tożsamości dostawcy.
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);
- Utwórz instancję klasy
FontsContract.FontRequestCallback
. - Zastąp metodę
onTypefaceRetrieved()
, aby wskazać, że żądanie czcionki zostało zakończone. Jako parametr podaj pobraną czcionkę. W ten sposób możesz odpowiednio ustawić czcionkę. Możesz na przykład ustawić czcionkę w poluTextView
. - Zastąp metodę
onTypefaceRequestFailed()
, aby otrzymywać informacje o błędach w procesie żądania czcionki. Więcej informacji o kodach błędów znajdziesz w opisie stałych kodów błędów. - Wywołaj metodę
FontsContract.requestFont()
, aby pobrać czcionkę od jej dostawcy. Ta metoda inicjuje sprawdzanie, czy czcionka znajduje się w pamięci podręcznej. Jeśli czcionka nie jest dostępna lokalnie, wywołuje dostawcę czcionki, pobiera ją asynchronicznie i przekazuje wynik do wywołania zwrotnego. Przekaż te parametry:- Instancja klasy
Context
- Instancja klasy
android.graphics.fonts.FontRequest
- Wywołanie zwrotne w celu otrzymania wyników żądania czcionki
- Moduł do pobierania czcionek w wątku
- Instancja klasy
Następujący przykładowy kod ilustruje ogólny proces pobierania czcionek do pobrania:
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);
Więcej informacji o tym, jak pobrać czcionkę od dostawcy czcionek, znajdziesz w przykładowej aplikacji DownloadableFonts.
Używanie czcionek do pobrania w AndroidX Core
AndroidX Core zapewnia obsługę funkcji Czcionki do pobrania na urządzeniach z Androidem API w wersji 14 lub nowszej. Pakiet androidx.core.provider
zawiera klasy FontsContractCompat
i FontRequest
, które implementują zgodną wstecznie funkcję obsługi czcionek do pobrania. Klasy AndroidaX zawierają metody podobne do metod platformy, a proces pobierania czcionek jest podobny do opisanego w sekcji na tej stronie dotyczącej programowego korzystania z czcionek do pobrania.
Aby pobrać czcionki za pomocą AndroidaX, zaimportuj klasy FontsContractCompat
i FontRequest
z pakietu androidx.core.provider
. Utwórz instancje tych klas zamiast klas platformy FontsContract
i android.graphics.fonts.FontRequest
.
Dodaj podstawową zależność AndroidaX
Aby używać klas FontsContractCompat
i FontRequest
, musisz zmodyfikować zależności ścieżki klasy projektu aplikacji w środowisku programistycznym.
Aby dodać AndroidX Core do projektu aplikacji, dodaj tę zależność do pliku build.gradle
aplikacji:
Odlotowe
dependencies { ... implementation "androidx.core:core-ktx:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
Używaj czcionek do pobrania jako zasobów w pliku XML
Android 8.0 (poziom interfejsu API 26) i AndroidX Core oferują szybszy i wygodniejszy sposób deklarowania czcionki niestandardowej jako zasobu w układzie XML. Oznacza to, że nie trzeba łączyć czcionki jako zasobu. Możesz zdefiniować niestandardową czcionkę dla całego motywu, co przyspieszy obsługę różnych stylów i grubości, np. pogrubienie, średni lub jasny (jeśli jest dostępne).
- Utwórz nowy plik XML w folderze
res/font
. - Dodaj element główny
<font-family>
i ustaw atrybuty związane z czcionkami, jak pokazano w tym przykładowym pliku XML: - Wskaż plik jako
@font/font_file_name
w pliku XML układu. Możesz też użyć metodygetFont()
, aby pobrać plik automatycznie, np.getFont(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>
Wstępna deklaracja czcionek w pliku manifestu
Wypełnianie układu i pobieranie zasobów to zadania synchroniczne. Domyślnie pierwsza próba pobrania czcionek powoduje wysłanie żądania do dostawcy czcionek i tym samym wydłuża czas trwania pierwszego układu. Aby uniknąć opóźnienia, możesz wstępnie zadeklarować czcionki, które trzeba pobrać w pliku manifestu. Gdy system pobierze czcionkę od dostawcy, będzie ona od razu dostępna. Jeśli pobieranie czcionek trwa dłużej niż zwykle, system przerwie proces pobierania i użyje czcionki domyślnej.
Aby wstępnie zadeklarować czcionki w pliku manifestu, wykonaj te czynności:
- Utwórz tablicę zasobów w zadaniu
res/values/arrays.xml
i zadeklaruj czcionki, które chcesz pobierać z wyprzedzeniem. - Zadeklaruj tablicę zasobów w pliku manifestu za pomocą tagu
meta-data
.
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" />
Dodaj certyfikaty
Jeśli dostawca czcionki nie jest wstępnie zainstalowany lub jeśli korzystasz z biblioteki AndroidX Core, zadeklaruj certyfikaty, za pomocą których jest on podpisany. System używa certyfikatów do weryfikowania tożsamości dostawcy czcionek.
Aby dodać certyfikaty, wykonaj te czynności:
- Utwórz tablicę ciągu znaków ze szczegółami certyfikatu. Więcej informacji o szczegółach certyfikatu znajdziesz w dokumentacji dostawcy czcionek.
- Ustaw atrybut
fontProviderCerts
na tablicę.
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
Czcionki do pobrania w Compose
Od wersji Compose 1.2-alfa07 możesz używać interfejsu Downloadable Fonts API w aplikacji Compose, aby asynchronicznie pobierać czcionki Google i używać ich w aplikacji. Więcej informacji znajdziesz w dokumentacji dotyczącej tworzenia czcionek do pobrania.