Android 字體修改,所有的細節都在這裡 | 開篇

2021-02-23 承香墨影

新媒體管家

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

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

期待你持續關注。

一、開篇

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

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

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

二、Android 的默認字體

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

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

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

正常來說,Robote 就已經提供了多種的選擇,例如:粗細、斜體 等等。但是通常它並不能滿足我們設計師的需要。

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

三、哪些屬性可以影響字體

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

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

android:textStyle

android:typeface

android:fontFamily

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

3.1 android:typeStyle

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

可以看到,字體是不受 textStyle 影響的,這裡影響的只有它的樣式。

3.2 android:typeface

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

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

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

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

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

3.3 android:fontFamily

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

fontFamily 的可選項還是很多的,這裡就不一一列舉了。不過需要注意,有一些字體的設置是有版本限制的。

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

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

需要注意的是,如果同時配置了 typeface 和 fontFamily ,將使用 fontFamily 配置的字體。

而除了 typeface 和 fontFamily 會有衝突之外,它們倆都是可以配合 typeStyle 屬性一起使用的,也就是說,這裡配置的字體,都是可以再加粗或者加斜體。

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

如果你能說服你的設計師,接受系統字體的話,你可以在 Theme 中,去配置你需要的默認字體。

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

五、使用自定義字體

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

關於字體,這裡推薦兩個網站,可以下載到免費的字體供我們使用。

https://fonts.google.com/

https://www.1001freefonts.com/

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

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

例如下面的例子,是一個通用的做法。

而 Typeface 並不只是為了加載一些自定義的字體文件,系統內置的字體,也是通過 Typeface 來管理的,可以說它就是 Android 的字體大管家。

好了,今天就到這裡。

下篇預告

Typeface 為我們提供了非常便捷的 Api,下篇會從源碼到使用,帶你一起分析 Typeface 的所有細節。
另外,最近有一個關於跳槽的分享,我這邊獨家有一些優惠活動。如果你有興趣,可以去看看《看我如何拿到上億用戶 App 家的 offer》。

iOS 專屬打賞

推薦閱讀:

點讚或者分享吧~

相關焦點

  • Android drawable微技巧,你所不知道的drawable的那些細節
    話說微技巧這個詞也是我自己發明的,因為drawable這個東西相信大家天天都在使用,每個人都再熟悉不過了,之所以叫微技巧就是對於這個我們再熟悉不過的技術,可能還有一些你所不知道的細節,那今天我們就來一起探究一下這些微小的細節吧。 大家都知道,在Android項目當中,drawable文件夾都是用來放置圖片資源的,不管是jpg、png、還是9.png,都可以放在這裡。
  • 手機字體怎麼改?修改手機字體的簡單教程
    一些網友想知道:手機字體怎麼改?在今天的手機教程中,我們就給大家分享一下修改手機字體的教程,當然,根據作業系統不同,小編分為了安卓手機修改手機字體的教程和蘋果手機修改手機字體的教程,修改手機字體的教程都儘量選擇簡單、好操作的,希望大家會喜歡!
  • 【電腦美化】Windows字體修改軟體,快速替換掉早已看膩的默認字體!
    小林君今天來分享一款軟體,可以修改Windows電腦系統顯示的默認字體,效果很不錯,適合想要換掉默認字體的小夥伴軟體名noMeiryoUI,是一款可以修改Windows系統默認顯示字體的軟體,通過電腦上下載安裝好的第三方字體,可以直接替換掉windows大部分界面所顯示的字體軟體本身不會對系統設置修改
  • Android Design Support Library之TabLayout
    app/build.gradle 中添加下面依賴: compile 'com.android.support:design:25.3.1'<android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width
  • cad中的標註箭頭和字體的大小怎麼修改?
    如何修改cad的標註箭頭和字體的大小?在cad作圖中,往往我們會遇到添加的標註樣式裡,字體和箭頭跟所標註的內容不協調的情況,偏大或者過於小看不到,下面分享設置的方法在cad作圖中,往往我們會遇到添加的標註樣式裡,字體和箭頭跟所標註的內容不協調的情況,偏大或者過於小看不到。
  • Android開發樣式和主題背景
    注意:只有添加了 style 屬性的元素才會收到這些樣式屬性,任何子視圖都不會應用這些樣式。如果希望子視圖繼承樣式,則應該改為應用具有 android:theme 屬性的樣式。不過,您通常不會將樣式應用於各個視圖,而是將樣式作為主題背景應用於整個應用、Activity 或視圖集合。
  • 厲害了,用Android自定義View實現八大行星繞太陽3D旋轉效果
    剛看到這個效果,覺得這個問題是個比較難的點,如果所有行星的父容器和太陽是平級關係,結果就是要麼所有的行星都會擋住太陽,要麼就是太陽都會擋住行星。修改xml文件: <com.glong.demo.view.StarGroupView android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView
  • Android 樣式系統 | 主題背景屬性
    在 Android 樣式系統系列的前幾篇文章中,我們介紹了主題背景與樣式的區別,以及為什麼說通過主題背景和公共主題背景屬性來分解您要實現的內容是一個不錯的主意,請點擊連結回顧:這會讓我們通過創建更少的布局或樣式,以隔離主題背景中的修改
  • android之RadioButton自定義圖片
    ><selector xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:state_checked="false"android:drawable="@mipmap/sex_normal_radio" /><itemandroid:state_checked="true"android
  • Android Material Design系列之FloatingActionButton和Snackbar
    這個系列都是主講的Material Design風格的控制項,所以都是控制項的一些基本使用,也會擴展講一些與這個控制項相關的東西和效果,如果都會了的同學,可以不看這個系列。當然看一下也沒啥,再鞏固一下知識點也挺好的。
  • Android仿全歷史——全沉浸時間軸實現
    android:layout_marginBottom="@dimen/margin_min_2" /></LinearLayout> 這個布局文件除了Tablayout外並沒有什麼好講的,所以我們直接進入第二部分2.Tablayout自定義全古蹟中的tablayout主要就是進行了tab切換後字體的大小、粗細的變化,tab採用了滾動的模式,下劃線Indicator是自定義的一個較短的下劃線
  • kotlin-android-extensions插件也被廢棄了?扶我起來
    這個findViewById()函數其實是很頭疼的,這裡我們只是獲取了一個控制項的實例,所以可能感受還不太明顯。如果你要去獲取10個甚至100個控制項的實例,每個都要去findViewById一遍,你一定會抓狂的。那麼如果是使用Kotlin語言的話,這個問題要怎麼解決呢?
  • Android 愛字體v5.9.8.8 捐贈版
    愛字體是一款全新的手機字體美化軟體大師,集成上百款精美可愛的中英文字體,最新最全的英文、簡繁體字庫。輕輕鬆鬆換字體,簡簡單單換心情!字體隨心變,個性我主宰!讓單調的手機界面煥然一新,我的個性你無法抄襲!
  • 課外拓展:如何修改pycharm內的字體?
    前言之前有安裝好pycharm的同學問我安裝好以後想修改字體,應該怎麼修改,由於大多數IDE都是英文的,包括我們使用的pycharm也是如此,那我們應該如何去使用他呢?都可以,如果大家搜不到或者解決不了這類問題,後期我給大家出一期文章,將內容方法發出來,到時候應該會有相應的漢化軟體在我們公眾號底層的菜單欄裡,大家到時候直接下載就可以跟著文章裡的安裝步驟去進行安裝了。那麼今天我們就先來看看,如何在英文版的pycharm裡修改字體大小。
  • 我給大牌改字體
    從事字體設計的工作,到如今恰好10個年頭,這10來年,我幾乎每天都在和字體打交道。2010年開始,連續寫了幾百篇「字體日記」,2015年,創建「字體幫」公眾號,發起「每日一字」活動,現在也已經堅持到了1200多篇……毫不誇張的講,字體,是我每天的必需品,離不開,也缺不得。每當看到一個新字體,我便會不由自主的分析他的結構、創意、變形……每一個筆畫,每一處細節,都不想放過。
  • 冰冷的吻FrostyKiss更改字體 修改字體顏色方法
    這我們給大家分享的是冰冷的吻FrostyKiss更改字體、修改字體顏色方法。對遊戲字體不是很滿意的玩家,可以看看哦。   6、如果你想給字體加點顏色,那麼接著上面輸入:  style.say_thought.color = "#000"  style.say_thought.outlines = [(1, "#fff", 0,0)]   大功告成,記得備份你的00style.rpy文件,文件在Steam\steamapps\common\Frosty Kiss
  • 幹嘛你們朋友圈曬的照片都這麼好看的丨濾鏡篇
    激萌和B612挺相似的,抓住了自拍這個需求,在美顏方面的功能都是比較重要的板塊,各種blingbling的特效和萌系動態貼紙都是樣樣不落。應對日常的偶爾的自拍、拍照的需求,用上述兩款其實就可以了,或者任一一款都可以。
  • 深入探索 Android 包瘦身(上)
    { public *;}<init>; //匹配所有構造器<fields>; //匹配所有欄位<methods>; //匹配所有方法-keep class com.json.chao.wanandroid.app.WanAndroidApp { public <fields>;}-keep class com.json.chao.wanandroid.app.WanAndroidApp
  • 修改蘋果手機字體,panto英文字體 For IOS13 縮小85%
    說明如下:1.英文用的是心雨的panto,對部分心雨沒有匹配的字形比如各種標點符號做了修改。更新:1.修復英文字體過小的問題2.修復縮小版字體在某些APP中顯示異常的問題。例如:在拼多多上有些地方不是顯示文字,顯示的是「……」。3.修復原生鍵盤候選文字只有一個字和組詞時,前後大小不一致的問題。
  • word英文資料怎樣只修改英文字體而不動中文字體
    我們有時候會用word瀏覽各種文件,其中一些中英文資料,可能會覺得英文字體比較難看或者看不習慣,那word英文資料怎樣只修改英文字體而不動中文字體呢?選擇英文之後,在開始裡找到文字字體選擇框。點擊文字選擇框,在其下拉菜單裡找到需要的英文字體(5225012 com)。點擊需要的英文字體,可以看到英文字體更改成選擇的字體了。