前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android O:使用自定义字体资源

Android O:使用自定义字体资源

作者头像
code_horse
发布2018-07-02 11:25:24
2.4K0
发布2018-07-02 11:25:24
举报
文章被收录于专栏:Android NoteAndroid Note
前言

Android O中的新功能之一是使用自定义字体资源。在这篇文章中,我们一起来看看如何在我们的应用程序中使用它们。

在Android O之前,在我们的应用中使用自定义字体有多困难?我们有两个选择: 1、编写自定义view 2、使用lib引入第三方字体

字体资源入门

Android O通过字体资源支持自定义字体。在app / res文件夹中新建文件夹,

在Android Studio中创建新的资源目录.png

创建字体文件夹很容易.就像创建 menu, values, drawable等等。

所以右键单击res文件夹并创建一个新font文件夹。

创建一个新的字体资源目录.png

字体格式

Android O支持.otf(OpenType)和.ttf(TrueType)字体格式。

我现在创建一个简单的页面。像一本书,标题是大型衬线字体。

我们将要创建的.png

在Android O中使用自定义字体资源

对于这篇Android O的文章,我将从Google字体中选择我的字体。

我的两个字体选择是: 1、Merriweather 2、Lato 以下是Merriweather的可用字体样式。

通过fonts.google.com下载字体.png

您可以下载您选择的.otf或.ttf字体,并将它们放在res / fonts文件夹中。

请注意,资源文件应使用小写字母和下划线。例如,下载的字体是Merriweather-Regular.ttf。当您将其复制到res / fonts文件夹时,将其重命名为merriweather_regular.ttf。

一旦您放入fonts文件夹中的自定义字体文件,就可以预览字体。只需双击一个字体,Android Studio会预览字体。

字体预览.png

转到您的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);

自定义字体样式.png

如果您使用的是字体系列,则会有相同的字体,权重不同。

你知道我在说什么,如果你下载一个字体并解压缩.zip文件,你会得到这样的多种字体变体。

字体资源.png

所以例如,假设我正在使用Merriweather-Regular。如果将字体样式设为粗体,Android将从我的字体系列中选择Merriweather-Bold,并显示。

使用字体系列

如上所述,如果您想在不同的样式中使用相同的字体呢?好的,也许你可以使用粗体或斜体的默认字体样式。但是如果你想要更薄的字体呢?薄而斜体?

创建一个字体系列

3个简单的步骤就可以做到这一点。 1、右键单击res / fonts文件夹并创建一个新的“ 字体资源文件 ”。

创建新字体资源文件.png

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字体将解除您的疑问。

谷歌字体下载ttf.png

之后,使用来自字体系列的单个字体是一样的。只需通过字体属性引用它们

android:fontFamily="@font/lato_black"

只要记住首先将所有的字体变体添加到字体文件夹。然后创建一个“ 字体资源文件 ”。然后添加每个字体变体的元素。最后,参考你的字体风格就像一个常规的单一字体。

自定义字体样式的可读性

在字体上直接使用字体TextView并不能保证良好的可读性。我们来看看。

默认的textview.png

这看起来很困难,所以如果您的应用程序的优先级是用户阅读内容。那么它也是您的首要任务,以确保内容易于阅读。 关键在于两个属性: 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" />
...

使用这些额外的属性,字体现在应该很容易阅读。

前后对比.png

如果您很难记住不同的属性,请使用XML编辑器中的“ 设计 ”窗格。右侧的“ 属性 ”窗格列出了您可以更改的所有可用属性。

XML编辑器设计视图中的TextView属性.png

最终结果

修改后的.png

哪里能了解更多的信息?

使用自定义字体资源只是Android O中的新功能之一。您可以在这里阅读其他Android O功能

快乐工作,享受编程!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.09.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 字体资源入门
    • 字体格式
    • 在Android O中使用自定义字体资源
    • 通过Java自定义字体
    • 使用字体系列
    • 创建一个字体系列
    • 自定义字体样式的可读性
    • 最终结果
    • 哪里能了解更多的信息?
      • 快乐工作,享受编程!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档