Funkcja Czcionki do pobrania pozwala interfejsom API żądać czcionek od aplikacji dostawcy zamiast grupować pliki w aplikacji lub umożliwiać jej pobieranie czcionek. Czcionki do pobrania są dostępne na na urządzeniach z interfejsem Android API w wersji 14 lub nowszej i 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 pomocą dostawcy usług. 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 pobierana przez sieć, gdy jest to konieczne.
Jak działają czcionki do pobrania?
Dostawca czcionek to aplikacja, która pobiera czcionki i zapisuje je w pamięci podręcznej lokalnie, dzięki czemu inne aplikacje mogą żądania i udostępniania czcionek. 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 późniejszych 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 Ci pomóc zacznij korzystać z funkcji czcionek do pobrania, skorzystaj z dostawcy czcionek z Google Play. usług Google.
- 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 sekcji „Do pobrania”. w pobliżu.
- Wybierz Utwórz czcionkę do pobrania i kliknij OK.
Android Studio automatycznie generuje odpowiednie pliki XML potrzebne do renderowania czcionki prawidłowo wyświetla się 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. Dla: więcej informacji o korzystaniu z biblioteki AndroidX Core znajdziesz w Sekcja biblioteki Fonts 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
: te zajęcia pozwolą Ci utworzyć noweTypeface
obiekt na podstawie z żądaniem czcionki.
Aplikacja pobiera czcionki od dostawcy czcionek za pomocą interfejsu API FontsContract
. Każdy
ma własny zestaw ograniczeń dla wersji Androida i języka zapytań, które obsługuje. Dla:
więcej informacji o wersjach Androida i formacie zapytania można znaleźć w
dokumentacji.
Aby pobrać czcionkę:
- Utwórz instancję klasy
android.graphics.fonts.FontRequest
, aby zażądać 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 opisie czcionki dokumentacji usługodawcy, takiej jak Czcionki Google.
- 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ę
FontsContract.FontRequestCallback
zajęcia. - Zastąp
onTypefaceRetrieved()
, aby wskazać, że żądanie czcionki zostało ukończone. Jako parametr podaj pobraną czcionkę. W ten sposób możesz odpowiednio ustawić czcionkę. Możesz na przykład ustawić czcionkę naTextView
- Zastąp
onTypefaceRequestFailed()
do otrzymywania informacji o błędach w procesie żądania czcionki. Więcej informacji na temat konfiguracji informacji o kodach błędów znajdziesz w stałe kodu błędu. - Wywołaj metodę
FontsContract.requestFont()
, aby pobrać czcionkę z czcionki dostawcy usług. Ta metoda inicjuje sprawdzanie, czy czcionka znajduje się w pamięci podręcznej. Jeśli czcionka nie jest dostępna lokalnie, wywołuje jej dostawcę, pobiera ją asynchronicznie i przekazuje wynik do wywołania zwrotnego. Przekaż te parametry:- Wystąpienie
Context
zajęcia - Instancja klasy
android.graphics.fonts.FontRequest
- Wywołanie zwrotne w celu otrzymania wyników żądania czcionki
- Moduł do pobierania czcionek w wątku
- Wystąpienie
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 tutaj: Czcionki do pobrania przykładową aplikację.
Używanie czcionek do pobrania w AndroidX Core
AndroidX Core obsługuje funkcję czcionek do pobrania na urządzeniach z Androidem
Interfejs API w wersji 14 lub nowszej.
androidx.core.provider
pakiet zawiera klasy FontsContractCompat
i FontRequest
do zaimplementowania
kompatybilną wstecznie funkcję Czcionki do pobrania. Klasy AndroidaX zawierają metody
proces pobierania czcionek jest podobny do tego,
opisane w sekcji na tej stronie na temat
programowo przy użyciu czcionek do pobrania.
Aby pobrać czcionki w AndroidzieX, zaimportuj pliki FontsContractCompat
oraz
FontRequest
zajęcia z pakietu androidx.core.provider
. Utwórz
tych klas, a nie
FontsContract
i
android.graphics.fonts.FontRequest
zajęć platformy.
Dodaj podstawową zależność AndroidaX
Aby używać klas FontsContractCompat
i FontRequest
, musisz zmodyfikować
zależności między ścieżkami klasowymi i zależnościami
ścieżki klasy w środowisku programistycznym.
Aby dodać AndroidX Core do projektu aplikacji, dodaj tę zależność do
Plik build.gradle
:
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 jako zasób w układzie XML. Oznacza to, że nie trzeba grupować czcionki jako zasobu. Możesz zdefiniować niestandardową czcionkę dla całego motywu, co przyspieszy obsługę różne wagi i style, np. pogrubienie, średni lub jasny, jeśli są dostępne.
- Utwórz nowy plik XML w folderze
res/font
. - Dodaj element główny
<font-family>
i ustaw atrybuty związane z czcionkami jako w tym przykładowym pliku XML: - Wskaż plik jako
@font/font_file_name
w pliku XML układu. Możesz też użyjgetFont()
automatycznego pobierania pliku, 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 przy pierwszej próbie Pobieranie czcionek powoduje wysłanie żądania do dostawcy czcionek, co zwiększa pierwszy układ obecnie się znajdujesz. 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 czcionka pobieranie trwa dłużej niż oczekiwano, system przerywa proces pobierania i używa wartości domyślnej czcionki.
Aby wstępnie zadeklarować czcionki w pliku manifestu, wykonaj te czynności:
- Utwórz tablicę zasobów w regionie
res/values/arrays.xml
i zadeklaruj, które czcionki mają pobrać 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 czcionek nie jest wstępnie zainstalowany lub jeśli korzystasz z biblioteki AndroidX Core, zadeklaruj certyfikaty używane przez dostawcę czcionki. System używa certyfikatów do sprawdzania tożsamości dostawcy czcionki.
Aby dodać certyfikaty, wykonaj te czynności:
- Utwórz tablicę ciągu znaków ze szczegółami certyfikatu. Więcej informacji o certyfikacie 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
Zaczyna się za Utwórz 1.2-alfa07, możesz użyć interfejsu Downloadable Fonts API w aplikacji Compose, aby pobrać asynchronicznie Google Fonts i używać ich w aplikacji; Dla: aby dowiedzieć się więcej, zobacz Dokumentacja tworzenia czcionek do pobrania.