Android字体资源

举报
yd_221104950 发表于 2020/12/02 23:27:16 2020/12/02
【摘要】 Android字体资源 1.概述2.没有Support Library 26库3.有Support Library 26库3.1.下载字体3.1.1.语法3.1.2.示例 1.概述 Android 8.0 (API 26)提供了一个新特性,即在xml定义字体。意味着字体作为一种资源的形式存在。我们将字体文件(.ttf或.otf)添加到res/f...

1.概述

Android 8.0 (API 26)提供了一个新特性,即在xml定义字体。意味着字体作为一种资源的形式存在。我们将字体文件(.ttf或.otf)添加到res/font/文件夹中,将字体捆绑为资源。这些字体会在R 文件中被编译,并在 Android Studio 中自动提供。我们可以通过@font/myfont在布局文件中使用,或R.font.myfont在Java中使用。为了能够在Android 4.1(API 16)的设备上使用这个新特性,我们的应用app要加入Support Library 26库。
那么我们以是否有Support Library 26库作为分界线来讨论字体的使用问题。

2.没有Support Library 26库

新建Assets及fonts目录,并将字体文件拷贝到fonts目录下
在这里插入图片描述
在java代码中使用:

TextView mTV = findViewById(R.id.tv);
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/华文彩云.TTF");
mTV.setTypeface(typeface);

  
 
  • 1
  • 2
  • 3

3.有Support Library 26库

新建资源目录font,并将字体文件拷贝到font目录下:
(注意 :资源文件名都要求用小写的英文字命名)
在这里插入图片描述
在布局文件中使用:

 <TextView android:fontFamily="@font/pop" android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content"/>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

在java中使用:

 TextView mTV = findViewById(R.id.tv); Typeface typeface = ResourcesCompat.getFont(this,R.font.pop); mTV.setTypeface(typeface);

  
 
  • 1
  • 2
  • 3

3.1.下载字体

这种方式是不把字体文件放在本地,而是在需要时,去网络上请求。

3.1.1.语法

 <?xml version="1.0" encoding="utf-8"?> <font-family android:fontProviderAuthority="authority" android:fontProviderPackage="package" android:fontProviderQuery="query" android:fontProviderCerts="@[package:]array/array_resource" /> 
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • android:fontProviderAuthority:必需。定义字体请求的字体提供程序的授权。
  • android:fontProviderPackage:必需。要用于请求的字体提供程序的软件包名称。此属性用于验证提供程序的身份。
  • android:fontProviderQuery:必需。字体的字符串查询。
  • android:fontProviderCerts:数组资源。必需。定义用于为此提供程序签名的证书的哈希集。此属性用于验证提供程序的身份,仅当提供程序不属于系统映像的一部分时才是必需的。该值可以指向单个列表(字符串数组资源)或列表的列表(数组资源),其中每个单独的列表代表一个签名哈希集合。

3.1.2.示例

保存于 res/font/lobster.xml 的 XML 文件:

<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" android:fontProviderAuthority="com.example.fontprovider.authority" android:fontProviderPackage="com.example.fontprovider" android:fontProviderQuery="Lobster" android:fontProviderCerts="@array/certs">
</font-family>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

定义证书数组的 XML 文件保存在 res/values/ 中:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources> 
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

应用字体:

<?xml version="1.0" encoding="utf-8"?> <EditText android:fontFamily="@font/lobster" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, World!" />

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/107075327

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。