原文: The Android Developer’s Guide to Better Typography
作者: Rod Sheeter
时间:2017 年 12 月 6 日
译按:去年更新的 Android Oreo,带来了「可下载字体」 的新特性,给予开发者更灵活的字体配置方式,缩减 APK 文件大小和共享字体以环节存储空间占用对设备厂商也是利好。Google Design 的这篇文章以一款应用程序——Plaid 为例,介绍了具体的字体排印案例。
字体排印可以使一款应用程序的吸引力和可用性发生重大变化。现在,Android 开发者可以使用 Google Fonts 中的字体,其简单,高效,并提供了一种新的字体排印方式。
尽管每一位开发者都知道,「设计」在用户体验中扮演着重要角色 ,它可能是一款应用成功或失败的关键因素。但在面对推进发布,逃避集成自定义字体的复杂性或是看似神秘的选择字体的艺术时,还是有着直接使用默认字体的诱惑。
幸运的是, Android Studio 支持新的「可下载的字体」功能,可以更轻松地为应用程序构建独特的字体排版。此功能可以轻松地将完整的 Google Fonts 中自由、可靠且高质的字体轻松地在 JellyBean 及更高版本(SDK 16+)中自定义字体排印。
除了美学改进之外,「可下载的字体」还可以减小 APK 文件的整体大小,并减少内存占用,因为已下载的字体将在所有的应用程序之间共享。而因为不需要预先捆绑字体,APK 文件会进一步更减小。如果一个应用程序从 Google Fonts 下载了一款字体,Android 会将其保存在存储空间中,以便其他应用程序也可以使用它,而无需占用任何额外的存储空间。就像我们网站的 API 直接向网站提供字体一样,人们使用 Google 字体越多,共享的延迟就越大。
在本教程中,我们以示例应用程序为例,通过以 Google Fonts 中的字体替换具有的特性和动态范围样式的内容的标准字体,来改善字体排印。我们将使用一款名为 Alegreya 的字体,作为一款「超级字体家族」,其具有广泛的样式、字重和变体。这意味着我们将有大量的字体排印的选择来微调界面外观。
我们使用的示例应用程序是由 Nick Butcher 开发的 Plaid,这是一款发布 Material Design 相关新闻的可滚动 Feed 应用。这些全出血的图块,你可以点击或点击以展开进入 dribble 的页面,其中有「喜欢」和「浏览」的统计信息。
本教程面向开发者,但它也解释了一些决定设计背后的「原因」,因此请注意这两点!
首先安装 Android Studio 3.0 ,然后从 Github 中 clone「Plaid」项目并 checkout b76937,这是我们将用于本教程的版本:
git clone<a href="https://github.com/rsheeter/plaid.git"> https://github.com/rsheeter/plaid.git</a>
cd plaid
git checkout b76937
现在,在 Android Studio 3.0 中打开该项目。
为了使用 Google Fonts 提供程序,你必须安装 Google Play 服务 12 版以上。如果你正在使用升级到最新系统的设备,则可以跳过; 但如果你使用的是 Android Studio 启动的模拟器,则可能使用的是旧版 Google Play 服务。从 Android Studio 更新 Android 虚拟设备,请按照下列步骤操作。
1. 创建一个带有 Play Store 的虚拟设备(Tools > Android > AVD Manager),Play Store 中的图标表示为:
2. 在 Android Studio 中启动一个虚拟设备。打开模拟器屏幕右侧的「Extended Controls」,点击垂直按钮面板底部的「…」图标:
3. 选择 Google Play 并检查版本号。如果您运行的是 11.2 版或更低版本,请点击 Update 按钮,这将引导至 Play Store,然后点击或点击绿色的 Update 按钮:
4. 现在已更新至 11.2 或更高版本,该设备将支持可下载的字体。
首先,我们来更新 About 页面。页面下半部分的「正文」段落目前被设置为 Roboto Regular ,这是一款无衬线字体,页面上半部分的标题被设置为 Roboto Mono Regular 。让我们将其转换为衬线字体 Alegreya ,这是一种充满活力的当代设计,其灵感来自书法字母,具有充满活力和节奏多变的特点。 Alegreya 是一款「超级字体家族」,最初用于文学作品排印,包括衬线和无衬线的姊妹字体家族。
标题文字就像「英雄形象」,这一图像能将人引导到页面中。并能定义情感语气。这里的标题的字母作为「蒙版」,将薄荷绿的前景切掉,镂空显示后面的图像。从 Roboto Mono Regular 改为 Alegreya Black,将为背景图像提供更大的镂空区域,更加明亮。
由于「About Activity」文本目前为「default」文本样式,即 Roboto Regular,我们必须手动设置为另一个:
Android Studio 已经配置了我们的应用程序以从 Google Fonts「提供程序」中检索字体。为此,它对我们的源码树进行了一些更改:
app/src/main/res/font/ ( <a href="https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html#using-downloadable-fonts-as-resources">查看更多</a> )
这个新目录包含描述字体资源的 XML 文件。在这种情况下,它提供了从 Google Fonts 提供程序加载字体的说明。
app/src/main/res/values/font_certs.xml ( <a href="https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html#adding-certificates">查看更多</a> )
为确保字体请求仅由可信方回应,该文件指定字体提供程序的签名。
app/src/main/res/values/preloaded_fonts.xml ( <a href="https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html#predeclaring-fonts">查看更多</a> )
这是在安装和更新过程中加载的字体列表,以确保这些字体在启动应用程序时可用。
你可以在 commit a1e711c 中看到此步骤的示例 diff。