Android O:使用自定義字體資源

前言

Android O中的新功能之一是使用自定義字體資源。在這篇文章中,我們一起來看看如何在我們的應(yīng)用程序中使用它們。

在Android O之前,在我們的應(yīng)用中使用自定義字體有多困難?我們有兩個(gè)選擇:
1、編寫自定義view
2、使用lib引入第三方字體

字體資源入門

Android O通過字體資源支持自定義字體。在app / res文件夾中新建文件夾,

在Android Studio中創(chuàng)建新的資源目錄.png

創(chuàng)建字體文件夾很容易.就像創(chuàng)建 menu, values, drawable等等。

所以右鍵單擊res文件夾并創(chuàng)建一個(gè)新font文件夾。

創(chuàng)建一個(gè)新的字體資源目錄.png
字體格式

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

我現(xiàn)在創(chuàng)建一個(gè)簡單的頁面。像一本書,標(biāo)題是大型襯線字體。

我們將要?jiǎng)?chuàng)建的.png

在Android O中使用自定義字體資源

對于這篇Android O的文章,我將從Google字體中選擇我的字體。

我的兩個(gè)字體選擇是:
1、Merriweather
2、Lato
以下是Merriweather的可用字體樣式。

通過fonts.google.com下載字體.png

您可以下載您選擇的.otf或.ttf字體,并將它們放在res / fonts文件夾中。

請注意,資源文件應(yīng)使用小寫字母和下劃線。例如,下載的字體是Merriweather-Regular.ttf。當(dāng)您將其復(fù)制到res / fonts文件夾時(shí),將其重命名為merriweather_regular.ttf。

一旦您放入fonts文件夾中的自定義字體文件,就可以預(yù)覽字體。只需雙擊一個(gè)字體,Android Studio會(huì)預(yù)覽字體。

字體預(yù)覽.png

轉(zhuǎn)到您的XML布局文件。我們跳過布局設(shè)計(jì),直接使用我們的字體。

<TextView
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:fontFamily="@font/merriweather_regular"/>

這是我簡單的TextView。需要使用里面的一個(gè)屬性,是的,就是這么簡單!

android:fontFamily="@font/merriweather_regular"

通過Java自定義字體

您可以通過編程方式分配字體。先取字體字體。然后把它設(shè)置為你的TextView。

Typeface typefaceLato = getResources().getFont(R.font.lato_regular);
mTextIntro.setTypeface(typefaceLato);

此外,您甚至可以指定一個(gè)基本的字體樣式,如粗體,斜體或兩者的組合。

mTextIntro.setTypeface(typefaceLato,Typeface.BOLD_ITALIC);
自定義字體樣式.png

如果您使用的是字體系列,則會(huì)有相同的字體,權(quán)重不同。

你知道我在說什么,如果你下載一個(gè)字體并解壓縮.zip文件,你會(huì)得到這樣的多種字體變體。

字體資源.png

所以例如,假設(shè)我正在使用Merriweather-Regular。如果將字體樣式設(shè)為粗體,Android將從我的字體系列中選擇Merriweather-Bold,并顯示。

使用字體系列

如上所述,如果您想在不同的樣式中使用相同的字體呢?好的,也許你可以使用粗體或斜體的默認(rèn)字體樣式。但是如果你想要更薄的字體呢?薄而斜體?

創(chuàng)建一個(gè)字體系列

3個(gè)簡單的步驟就可以做到這一點(diǎn)。
1、右鍵單擊res / fonts文件夾并創(chuàng)建一個(gè)新的“ 字體資源文件 ”。

創(chuàng)建新字體資源文件.png

2、為要包含的每個(gè)字體變體添加一個(gè)元素。讓我們回到我們想要做的設(shè)計(jì)。字體樣式很薄,粗體和斜體將是很好的。所以我們再加三個(gè)。

我只想改變body內(nèi)容的字體。所以我們?yōu)長ato添加3個(gè)字體變體。

<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

之后,使用來自字體系列的單個(gè)字體是一樣的。只需通過字體屬性引用它們

android:fontFamily="@font/lato_black"

只要記住首先將所有的字體變體添加到字體文件夾。然后創(chuàng)建一個(gè)“ 字體資源文件 ”。然后添加每個(gè)字體變體的元素。最后,參考你的字體風(fēng)格就像一個(gè)常規(guī)的單一字體。

自定義字體樣式的可讀性

在字體上直接使用字體TextView并不能保證良好的可讀性。我們來看看。

默認(rèn)的textview.png

這看起來很困難,所以如果您的應(yīng)用程序的優(yōu)先級是用戶閱讀內(nèi)容。那么它也是您的首要任務(wù),以確保內(nèi)容易于閱讀。
關(guān)鍵在于兩個(gè)屬性:
1、letterSpacing
2、lineSpacingExtra

所以考慮到這一點(diǎn),這里是我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" />
...

使用這些額外的屬性,字體現(xiàn)在應(yīng)該很容易閱讀。

前后對比.png

如果您很難記住不同的屬性,請使用XML編輯器中的“ 設(shè)計(jì) ”窗格。右側(cè)的“ 屬性 ”窗格列出了您可以更改的所有可用屬性。


XML編輯器設(shè)計(jì)視圖中的TextView屬性.png

最終結(jié)果

修改后的.png

哪里能了解更多的信息?

使用自定義字體資源只是Android O中的新功能之一。您可以在這里閱讀其他Android O功能。

快樂工作,享受編程!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,954評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,322評論 0 17
  • 作為一名前端coder,用的最多的請求就是ajax請求了?;蛟S你用的其他框架,但是從原生js到j(luò)query,aja...
    柯琦閱讀 2,071評論 0 4
  • 晨夢 詩/凱歌兒 一陣未接來電 撕開夢的欺騙 驚魂初定的夢魘 洗把臉才安全 晨霧中高樓林立 冰冷的鋼筋水泥 露霜芳...
    凱歌兒閱讀 299評論 0 2

友情鏈接更多精彩內(nèi)容