Android字体资产与字体资源(API 26)
为了在android应用程序中使用自定义字体,似乎有两种方法:Android字体资产与字体资源(API 26),android,fonts,android-appcompat,Android,Fonts,Android Appcompat,为了在android应用程序中使用自定义字体,似乎有两种方法: 经典方式:将TTF或OTF文件放置在/assets/fonts目录中,然后使用构建一个 从API 26开始本机使用,或从API 16开始使用AppCompat使用:将小写TTF/OTF文件放置在res/font文件夹中,然后使用android:fontFamily=“@font/custom”在XML布局中直接引用它们,或使用 字体资源和资产之间需要记住的关键区别是什么 具体地说,它们是以相同的方式呈现的吗?它们中有哪一个在性能方面
/assets/fonts
目录中,然后使用构建一个res/font
文件夹中,然后使用android:fontFamily=“@font/custom”
在XML布局中直接引用它们,或使用TextView
s中设置自定义字体的唯一方法,无需手动将其绘制为位图,但这需要设备实际运行API 26(在这种特定情况下,使用支持库没有帮助)
具体地说,它们是以相同的方式呈现的吗?它们中有哪一个在性能方面更快或更高效
ResourcesCompat.getFont
的工作原理如下:
字体
,请检查内存缓存。如果我们成功了,我们就完蛋了Typerface.createFromFile
从文件中创建Typeface
,并将其缓存字体
对象
一个关键的区别是:如果您直接使用Typeface
API,那么您需要负责缓存。您不想多次加载同一字体,因为每个Typeface
实例都会占用大量内存
从历史上看,当从资产加载字体时,我一直在使用缓存
经过一点实验,字体资源似乎是在AppWidget文本视图中设置自定义字体的唯一方法[…]
看来你是对的。通知和小部件(使用的任何东西)只能使用视图上本机可用的资源和属性
另请参见:字体资源在API 26本机或在AppCompat的帮助下在所有版本的Android上都受支持。这就是AppCompat的要点——让新东西能够在旧设备上运行。除了API 26以上版本支持的XML字体资源*和*需要AppCompat依赖项,您从哪里得到这个
?@EugenPechanec:是的,我的措辞令人困惑;感谢您发现它,已修复。使用支持库时,要在XML布局文件中正确加载字体,您必须使用应用程序名称空间:app:fontfalism=“@font/custom”。来源:因此,建议使用fontresource
而不是fontassets
@尤金·佩切内克