前言
Android O中的新功能之一是使用自定义字体资源。在这篇文章中,我们一起来看看如何在我们的应用程序中使用它们。
在Android O之前,在我们的应用中使用自定义字体有多困难?我们有两个选择:
1、编写自定义view
2、使用lib引入第三方字体
字体资源入门
Android O通过字体资源支持自定义字体。在app / res文件夹中新建文件夹,
创建字体文件夹很容易.就像创建 menu, values, drawable等等。
所以右键单击res文件夹并创建一个新font文件夹。
字体格式
Android O支持.otf(OpenType)和.ttf(TrueType)字体格式。
我现在创建一个简单的页面。像一本书,标题是大型衬线字体。
在Android O中使用自定义字体资源
对于这篇Android O的文章,我将从Google字体中选择我的字体。
我的两个字体选择是:
1、Merriweather
2、Lato
以下是Merriweather的可用字体样式。
您可以下载您选择的.otf或.ttf字体,并将它们放在res / fonts文件夹中。
请注意,资源文件应使用小写字母和下划线。例如,下载的字体是Merriweather-Regular.ttf。当您将其复制到res / fonts文件夹时,将其重命名为merriweather_regular.ttf。
一旦您放入fonts文件夹中的自定义字体文件,就可以预览字体。只需双击一个字体,Android Studio会预览字体。
转到您的XML布局文件。我们跳过布局设计,直接使用我们的字体。
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/merriweather_regular"/>
这是我简单的TextView。需要使用里面的一个属性,是的,就是这么简单!
android:fontFamily="@font/merriweather_regular"
通过Java自定义字体
您可以通过编程方式分配字体。先取字体字体。然后把它设置为你的TextView。
Typeface typefaceLato = getResources().getFont(R.font.lato_regular);
mTextIntro.setTypeface(typefaceLato);
此外,您甚至可以指定一个基本的字体样式,如粗体,斜体或两者的组合。
mTextIntro.setTypeface(typefaceLato,Typeface.BOLD_ITALIC);
如果您使用的是字体系列,则会有相同的字体,权重不同。
你知道我在说什么,如果你下载一个字体并解压缩.zip文件,你会得到这样的多种字体变体。
所以例如,假设我正在使用Merriweather-Regular。如果将字体样式设为粗体,Android将从我的字体系列中选择Merriweather-Bold,并显示。
使用字体系列
如上所述,如果您想在不同的样式中使用相同的字体呢?好的,也许你可以使用粗体或斜体的默认字体样式。但是如果你想要更薄的字体呢?薄而斜体?
创建一个字体系列
3个简单的步骤就可以做到这一点。
1、右键单击res / fonts文件夹并创建一个新的“ 字体资源文件 ”。
2、为要包含的每个字体变体添加一个元素。让我们回到我们想要做的设计。字体样式很薄,粗体和斜体将是很好的。所以我们再加三个。
我只想改变body内容的字体。所以我们为Lato添加3个字体变体。
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
<font
android:font="@font/lato_light"
android:fontStyle="normal"
android:fontWeight="300"/>
<font
android:font="@font/lato_regular"
android:fontStyle="normal"
android:fontWeight="400"/>
<font
android:font="@font/lato_bold"
android:fontStyle="normal"
android:fontWeight="700"/>
</font-family>
如果您不确定fontWeight,可以快速浏览Google字体将解除您的疑问。
之后,使用来自字体系列的单个字体是一样的。只需通过字体属性引用它们
android:fontFamily="@font/lato_black"
只要记住首先将所有的字体变体添加到字体文件夹。然后创建一个“ 字体资源文件 ”。然后添加每个字体变体的元素。最后,参考你的字体风格就像一个常规的单一字体。
自定义字体样式的可读性
在字体上直接使用字体TextView并不能保证良好的可读性。我们来看看。
这看起来很困难,所以如果您的应用程序的优先级是用户阅读内容。那么它也是您的首要任务,以确保内容易于阅读。
关键在于两个属性:
1、letterSpacing
2、lineSpacingExtra
所以考虑到这一点,这里是我TextView 在布局中的元素。
...
<TextView
style="@style/TextAppearance.AppCompat.Headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/merriweather_regular" />
<TextView
style="@style/TextAppearance.AppCompat.Subhead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="4dp"
android:letterSpacing="0.08" />
<TextView
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="match_parent"
android:letterSpacing="0.04"
android:layout_height="wrap_content"
android:fontFamily="@font/lato_regular"
android:lineSpacingExtra="4dp" />
...
使用这些额外的属性,字体现在应该很容易阅读。
如果您很难记住不同的属性,请使用XML编辑器中的“ 设计 ”窗格。右侧的“ 属性 ”窗格列出了您可以更改的所有可用属性。
最终结果
哪里能了解更多的信息?
使用自定义字体资源只是Android O中的新功能之一。您可以在这里阅读其他Android O功能。