前言在Android下使用自定义字体已经是一个比较普遍的需求,最近做了比较深入的研究。然后按照惯例,我再发一篇Android字体修改的文章,但是写下来发现内容挺多的,所以决定拆分成几篇文章详细讲解(也许五篇文章)。主要会是一些常用的字体替换方案,最后会介绍一些全局替换方案,当然也会包括最新的“FontsinXML”方案。期待您的持续关注。1、文章开头是因为Android字体相关的内容相当多。有时候我们只需要调整一下属性就可以满足设计者的需求,或者是退避三舍的方案(毕竟发布时间卡住了),有些效果可以大致满足需求。所以本文首先介绍一些Android下构建的原生字体的一些基本概念和使用。需要注意的是,一些内置字体只对英文有效。2、Android的默认字体Android系统默认使用一种名为Robote的字体。Robote本身就是谷歌自己的字体格式。在安卓和Chrome操作系统上,默认使用Robote字体,也是谷歌视觉语言推荐的字体。要了解有关Robote的更多信息,您可以访问Google的网站。https://fonts.google.com/specimen/Roboto通常情况下,Robote已经提供了多种选择,比如:粗细、斜体等等。但通常它不能满足我们设计师的需求。接下来,让我们看看当我们想要使用一些Android内置的字体时,需要使用哪些属性。3、哪些属性可以影响字体Android本身已经提供了一些修改字体样式的属性和方法。当你要修改字体时,你会面临三个属性,它们都有对应的Java方法。android:textStyleandroid:typefaceandroid:fontFamily下面详细解释一下这些属性。3.1android:typeStyletextStyle主要用于设置部分字体的样式,对所有字体都有效。也就是说,即使你更换了字体,你仍然可以使用textStyle来修改它的样式。textStyle本身支持的选项是normal|bold|italic,也很好理解,就是normal|bold|italic。如您所见,字体不受textStyle的影响,这里只影响其样式。3.2android:typefacetypeface可以用来设置一些默认字体,它的可选属性有normal|sans|serif|monospace等。normal和sans字体其实是一样的,serif是衬线字体,nonospace是等宽字体。这样一来,其实是无法理解他们的。不如直接上传效果图说明问题。你可以看到serif将衬线添加到默认字体中。而nonospace限制了每个字符的宽度,使它们达到等宽的效果。等宽其实很好理解。衬线是什么意思?这里有一张来自维基百科的图片,可以直观的说明问题。衬线体其实就是字体边缘的小啾啾。3.3android:fontFamilyfontFamily看起来像是对字体的增强,从它的选项可以看出,它对字体样式的区分更加细致。fontFamily还有很多选项,这里就不一一列举了。不过需要注意的是,有些字体设置是有版本限制的。例如:sans-serif-medium仅被Android5.0支持。下面举几个例子看看效果:需要注意的是,如果同时配置了typeface和fontFamily,会使用fontFamily配置的字体。除了typeface和fontFamily之间存在冲突外,两者都可以与typeStyle属性一起使用,也就是说这里配置的字体可以加粗或加斜体。4.使用theme修改全局字体如果你能说服你的设计师接受系统字体,你可以在Theme中配置你需要的默认字体。在应用中,通过android:theme配置一个App主题。一般新创建的项目都是@style/AppTheme。给它添加关于字体的属性android:fontFamily,就可以完成全局设置一个系统字体。当然,你可以为单个TextView配置一个特殊的字体,这也是可以接受的。5、使用自定义字体有时候,Android系统默认的字体已经不能满足我们的需求了。这时候我们就需要用到一些自定义的特殊字体。关于字体,这里推荐两个网站,大家可以免费下载字体给我们使用。https://fonts.google.com/https://www.1001freefonts.com/字体文件通常是设计师提供给我们的,一般是.ttf(TrueType)或者.otf(OpenType)格式,比较常用的是.ttf格式。通常我们将字体文件放在assets目录下。要加载字体文件,我们需要使用Typeface类,它提供了一些API来帮助我们加载自定义字体文件。例如,下面的例子是一种常见的做法。而Typeface不仅仅是加载一些自定义字体文件,系统内置的字体也由Typeface管理,可以说是Android的字体管家。好了,今天就到这里。【本文为专栏作家“张扬”原创稿件,转载请微信♂联系作者获得授权】点此查看作者更多好文
