Android 字體修改,全部的細節都在這裏 | 開篇

版權聲明:android

本帳號發佈文章均來自公衆號,承香墨影(cxmyDev),版權歸承香墨影全部。app

每週會統一更新到這裏,若是喜歡,可關注公衆號獲取最新文章。字體

未經容許,不得轉載。網站

在 Android 下使用自定義字體已是一個比較常見的需求了,最近也作了個比較深刻的研究。google

那麼按照慣例我又要出個一篇有關 Android 修改字體相關的文章,可是寫下來發現內容還挺多的,因此我決定將它們拆分一下,分幾篇來詳細的講解(多是五篇)。主要會是一些經常使用的替換字體的方案,最後還會介紹一些全局替換的方案,固然也會包含最新的 『Fonts in XML』的方案。spa

期待你持續關注。操作系統

1、開篇

由於 Android 字體相關的內容還比較多的。有時候其實咱們只須要調整一下屬性就能夠知足設計師的需求,或者是一個退後的方案(畢竟有發版的時間卡住了),有一些效果能夠大概知足需求。設計

那麼本文就先介紹一下再 Android 下原生內置的一些字體的一些基本概念和使用。3d

須要注意的是,內置的一些字體只對英文有效。code

2、Android 的默認字體

Android 系統默認使用的是一款叫作 Robote 的字體。Robote 自己就是 Google 本身的字體格式,Android 和 Chrome 操做系統上,默認都會使用 Robote 字體,而且也是 Google 視覺語言推薦的字體。

想要了解更多關於 Robote 的內容,能夠去 Google 的網站上查看。

https://fonts.google.com/specimen/Roboto

正常來講,Robote 就已經提供了多種的選擇,例如:粗細、斜體 等等。可是一般它並不能知足咱們設計師的須要。

接下來看看當咱們想要使用 Android 內置的一些字體的時候,咱們須要使用哪些屬性。

3、哪些屬性能夠影響字體

Android 自己已經提供了一些修改字體樣式的屬性和方法。

當你想要修改字體的時候,你將面對三個屬性,它們都有對應的 Java 方法。

  • android:textStyle
  • android:typeface
  • android:fontFamily

下面來分別詳細的說明這幾個屬性。

3.1 android:textStyle

textStyle 主要用於設定一些字體的樣式,它是對全部的字體都生效的。也就是說哪怕你替換了字體,依然可使用 textStyle 來修飾它的樣式。textStyle 自己支持的可選項有 normal|bold|italic,它們也很是的好理解,就是普通|粗體|斜體

/f-textStyle.png

能夠看到,字體是不受 textStyle 影響的,這裏影響的只有它的樣式。

3.2 android:typeface

typeface 能夠用於設置一些默認的字體,它可選的屬性有 normal|sans|serif|monospace 等。normal 和 sans 的字體實際上是同樣的,serif 是一個帶襯線的字體,而 nonospace 是等寬字體。

光這樣說,其實也沒法理解它們,直接上效果圖比較能說明問題。

/f-typeface.png

能夠看到 serif 在默認的字體上,增長了襯線。而 nonospace 限制了每一個字符的寬度,讓它們達到一個等寬的效果。

等寬其實很好理解,襯線究竟是什麼意思?這裏引用維基百科的一張圖,就能很直觀的說明問題。

/f-textserif.png

襯線其實就是字體邊緣的那一點點小啾啾。

3.3 android:fontFamily

fontFamily 看着像是對 typeface 的一次增強,從它的可選項就能看出來,它更細緻的區分了字體的樣式。

fontFamily 的可選項仍是不少的,這裏就不一一列舉了。不過須要注意,有一些字體的設置是有版本限制的。

例如:sans-serif-medium 是須要 Android 5.0 的版本才支持的。

下面直接舉幾個例子看看效果了:

/f-fontfamily.png

須要注意的是,若是同時配置了 typefacefontFamily ,將使用 fontFamily 配置的字體。

而除了 typefacefontFamily 會有衝突以外,它們倆都是能夠配合 typeStyle 屬性一塊兒使用的,也就是說,這裏配置的字體,都是能夠再加粗或者加斜體。

4、利用主題修改全局字體

若是你能說服你的設計師,接受系統字體的話,你能夠在 Theme 中,去配置你須要的默認字體。

在 application 中,經過 android:theme 來配置一個 App 的主題。通常新建立的項目,都是 @style/AppTheme 。在其中追加關於字體的屬性 android:fontFamily,它就能夠完成對全局設置一個系統字體。固然你能夠對一個單獨的 TextView 配置一個特別的字體,都是能夠接受的。

/f-basetheme.png

5、使用自定義字體

有時候,Android 系統默認的字體已經沒法知足咱們的需求了,這個時候咱們就會須要使用一些定製的特殊字體。

關於字體,這裏推薦兩個網站,能夠下載到免費的字體供咱們使用。

https://fonts.google.com/

https://www.1001freefonts.com/

字體文件,一般都是設計師提供給咱們的,通常都是 .ttf(TrueType) 或者 .otf(OpenType) 這兩種格式的,比較經常使用的是 .ttf 格式的。

一般咱們會把字體文件放再 assets 目錄下,想要加載字體文件,須要使用到 Typeface 這個類,它其中提供了一些 Api ,用於幫助咱們來加載一個咱們自定義的字體文件。

例以下面的例子,是一個通用的作法。

/f-createfont.png

而 Typeface 並不僅是爲了加載一些自定義的字體文件,系統內置的字體,也是經過 Typeface 來管理的,能夠說它就是 Android 的字體大管家。

好了,今天就到這裏。

下篇預告

Typeface 爲咱們提供了很是便捷的 Api,下篇會從源碼到使用,帶你一塊兒分析一下 Typeface 的全部細節。

公衆號二維碼.jpg

點贊或者分享吧~

相關文章
相關標籤/搜索