Загрузите пользовательский шрифт для использования в приложении Android.

Я намерен избегать связывания шрифтов с моим приложением для Android. Следовательно, я хочу знать, можно ли загружать шрифты на лету и использовать ли мое приложение для Android.

Мне уже известно о недавно представленной концепции загружаемого шрифта . в Android, но это относится только к шрифтам Google.

Я хочу использовать эти шрифты во всем своем приложении (где бы ни отображался текст в приложении).

Пожалуйста, обрати внимание:

  1. Это не список шрифтовых приложений, из которых пользователь может выбирать.
  2. Я могу запустить приложение со шрифтом по умолчанию на устройстве, затем загрузить пользовательский шрифт с сервера и использовать его в приложении.

person Varun Bhatia    schedule 15.12.2017    source источник
comment
Каков именно ваш вопрос? можно вкратце объяснить? Вы хотите установить пользовательские шрифты в свой элемент управления, например, в Textview?   -  person InsaneCat    schedule 15.12.2017
comment
это что-то вроде хранения шрифтов на сервере, показа списка шрифтов пользователю, когда пользователь нажимает на него, загружает и использует?   -  person Aswin P Ashok    schedule 15.12.2017
comment
Это не список шрифтов, из которых клиент может выбирать. Я могу запустить приложение со шрифтом по умолчанию на устройстве, затем загрузить пользовательский шрифт с сервера и использовать его в приложении.   -  person Varun Bhatia    schedule 15.12.2017
comment
Просто запустите свое приложение со шрифтом по умолчанию, и после того, как начнется начальная активность, добавьте диалоговое окно или индикатор выполнения, и в фоновом режиме вы сможете загрузить свой шрифт, а затем программно добавить его в свои представления. Используйте условие «если» с представлениями, чтобы проверить, загружен ли шрифт или нет.   -  person Aryan Raj    schedule 15.12.2017
comment
@AryanRaj Я могу загружать шрифты на лету, но не знаю, как их использовать программно. Единственные рекомендации, которые я получаю, - это использование шрифтов, встроенных в приложение.   -  person Varun Bhatia    schedule 15.12.2017
comment
В этом случае вы можете использовать общие настройки, чтобы загрузить файл через Интернет и сохранить его локально в папке приложений в пользовательском хранилище. А затем прочитать файл оттуда и установить его с помощью setTypeFace.   -  person Aryan Raj    schedule 15.12.2017
comment
чтобы установить шрифт в TextView, вы можете использовать textViewName.setTypeface(typeface); шрифт получен в обратном вызове FontsContractCompat.FontRequestCallback(), реализованном для загружаемых шрифтов.   -  person ashishdhiman2007    schedule 03.01.2019


Ответы (1)


Из вашего вопроса видно, что вы хотите иметь шрифт, доступный для вашего приложения, который загружается программно при запуске приложения (а не в комплекте с приложением).

Вы также сказали, что знаете о новых загружаемых Шрифты, но это «применяется только к шрифтам Google». Это неправильно. пример приложения использует встроенный поставщик шрифтов Google Play Services. . Однако, согласно документации, вы также можете использовать свой собственный поставщик шрифтов, поддерживаемый вашим собственным онлайн-сервером, предоставляющим шрифты.

Я не пробовал это, но я представляю себе ваш пользовательский класс "FontsProvider" (расширенный ContentProvider) будет учитывать FontsContract, введенный в API 26. Получив запрос FontRequest, он найдет шрифт из его локальный кеш (или, альтернативно, на сервере, на котором вы работаете), затем верните Typeface через FontsContract.FontRequestCallback точно так же, как Google Play Services один делает. (Опять же, посмотрите на документы — у вас есть возможность требовать или не требовать сертификат.)

Пользовательский FontProvider может быть включен в стороннее приложение (скажем, в компанию по производству шрифтов, которая предоставляет шрифты). Но я не понимаю, почему вы не можете добавить свой собственный FontProvider в свое собственное приложение, чтобы он связывался с вашим сервером и самостоятельно обрабатывал все кэширование.

Между прочим, если вам интересно узнать об API, который служба Google Font использует для предоставления информации о шрифтах (включая ссылки на файлы), см. здесь. Отвечая на другой вопрос, связанный со шрифтами, я написал очень простой python программа, которая получает список всех шрифтов, затем анализирует и фильтрует его, что может быть немного полезно, если вы решите написать собственную серверную службу поставщика шрифтов.

person fattire    schedule 31.01.2018
comment
В настоящее время я вижу только поставщика шрифтов Google, связанного с сервисами Google Play, в качестве единственного поставщика шрифтов в случае Android и функции загружаемого шрифта. - person ashishdhiman2007; 03.01.2019