В частности, они отображаются одинаково, и является ли какой-либо из них быстрее или эффективнее с точки зрения производительности?
ResourcesCompat.getFont
работает так:
- Проверьте кэш в памяти, если мы уже преобразовали идентификатор ресурса шрифта в
Typeface
.Если у нас есть попадание, все готово. - Скопируйте ресурс в файл на диске.
- Создайте
Typeface
из файла с помощью Typerface.createFromFile
и кэшируйте его.
Это верно для шрифтов, включенных в APK.Я не буду вдаваться в подробности работы загружаемых шрифтов.Вы можете исследовать, что в документах или в источнике .
Оба подхода работают одинаково.Они создают Typeface
объект из источника.
Одно ключевое отличие: Если вы напрямую используете Typeface
API, вы отвечаете за кеширование. Вы не хотитезагружать один и тот же шрифт несколько раз, потому что каждый экземпляр Typeface
занимает много памяти.
Исторически я использовал этот код из Calligraphy для обеспечения кэширования при загрузке гарнитур из ресурсов.
После нескольких экспериментов кажется, что ресурсы шрифтов - единственный способ установить пользовательские шрифты в AppWidget TextViews [...]
Похоже, выправо.Уведомления и виджеты (все, что использует RemoteViews
) могут использовать только собственные ресурсы и атрибуты для представлений.
См. Также: Как использовать пользовательскую гарнитуру в виджете?