如何使用Android O中引入的可下载字体功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36707431/article/details/78959870
       可下载的字体是一种功能,允许应用程序从提供程序请求某种字体,而不是捆绑或自行下载。 这意味着,不需要将字体捆绑在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 引入改字体。



唯一的遗憾就是国内没法使用!!!

猜你喜欢

转载自blog.csdn.net/qq_36707431/article/details/78959870