可下载的字体是一种功能,允许应用程序从提供程序请求某种字体,而不是捆绑或自行下载。 这意味着,不需要将字体捆绑在asset资源文件中。
有两种请求下载字体的方法:(如果使用支持库,该功能将返回API级别14。)
一、要请求从Java代码下载字体,您需要先创建一个FontRequest类
FontRequest request = new FontRequest(
"com.google.android.gms.fonts", // ProviderAuthority
"com.google.android.gms", // ProviderPackage
query, // Query查询的字体
R.array.com_google_android_gms_fonts_certs); // Certificates
然后通过网络去下载字体 private Handler getHandlerThreadHandler() {
if (mHandler == null) {
HandlerThread handlerThread = new HandlerThread("fonts");
handlerThread.start();
mHandler = new Handler(handlerThread.getLooper());
}
return mHandler;
}FontsContractCompat.requestFont(context, request, callback, handler);//上下文、请求参数、请求回掉、Handler二、在XML文件中声明下载的字体(Lobster
Two),并让系统为您下载并在布局中使用它。 <font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="Lobster Two"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>
通过在XML文件中定义请求的字体并将预加载字体数组和元数据标签放在AndroidManifest中,可以避免延迟,直到字体被第一次尝试下载为止。<resources>
<array name="preloaded_fonts" translatable="false">
<item>@font/lobster_two</item>
</array>
</resources><application >
...
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
...
</application>
然后在布局文件里的控件中使用fontFamily 引入改字体。唯一的遗憾就是国内没法使用!!!
本文介绍了Android应用中可下载字体的功能,包括两种实现方式:通过Java代码请求下载和在XML文件中声明字体。此外,还提供了如何避免字体下载延迟的方法。
1531

被折叠的 条评论
为什么被折叠?



