Używaj czcionek do pobrania

Wypróbuj sposób tworzenia wiadomości
Jetpack Compose to zalecany zestaw narzędzi UI na Androida. Dowiedz się, jak używać tekstu w funkcji Compose

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.
. Aby dowiedzieć się więcej o czcionkach do pobrania, zapoznaj się z Czcionki do pobrania przykładową aplikację.

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.

Obrazy przedstawiające główne elementy procesu dopasowywania emotikonów
Rysunek 1. proces tworzenia czcionek do pobrania.

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:

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.

  1. W Edytorze układu wybierz TextView. Następnie w sekcji Atrybuty wybierz fontFamily > > Więcej czcionek.
    Ilustracja pokazująca Edytor układów w Android Studio
    Rysunek 2. za pomocą Edytora układów.
    .
    . Pojawi się okno Zasoby.
  2. W menu Źródło wybierz Google Fonts.
  3. W polu Czcionki wybierz czcionkę w sekcji „Do pobrania”. w pobliżu.
  4. Wybierz Utwórz czcionkę do pobrania i kliknij OK.
    Obraz pokazujący, jak wybrać czcionki w oknie Zasoby
    Rysunek 3. wybrać czcionkę w oknie Zasoby,
  5. Android Studio automatycznie generuje odpowiednie pliki XML potrzebne do renderowania czcionki prawidłowo wyświetla się w aplikacji.

    Obraz pokazujący, jak wyświetlić podgląd czcionek
    Rysunek 4. Podgląd pliku czcionek.

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:

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ę:

  1. 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);
    
  2. Utwórz instancję FontsContract.FontRequestCallback zajęcia.
  3. 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ę na TextView
  4. 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.
  5. 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

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.

  1. Utwórz nowy plik XML w folderze res/font.
  2. Dodaj element główny <font-family> i ustaw atrybuty związane z czcionkami jako w tym przykładowym pliku XML:
  3. <?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>
    
  4. Wskaż plik jako @font/font_file_name w pliku XML układu. Możesz też użyj getFont() automatycznego pobierania pliku, np. getFont(R.font.font_file_name)

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:

  1. Utwórz tablicę zasobów w regionie res/values/arrays.xml i zadeklaruj, które czcionki mają pobrać z wyprzedzeniem.
  2. 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>
    
  3. Zadeklaruj tablicę zasobów w pliku manifestu za pomocą tagu meta-data.
  4. <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:

  1. Utwórz tablicę ciągu znaków ze szczegółami certyfikatu. Więcej informacji o certyfikacie znajdziesz w dokumentacji dostawcy czcionek.
  2. <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="certs">
           <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
        </string-array>
    </resources>
    
  3. Ustaw atrybut fontProviderCerts na tablicę.
  4. 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.