前言
Android O中的新功能之一是使用自定義字體資源肛搬。在這篇文章中及塘,我們一起來看看如何在我們的應(yīng)用程序中使用它們。
在Android O之前苦蒿,在我們的應(yīng)用中使用自定義字體有多困難霹崎?我們有兩個(gè)選擇:
1禀倔、編寫自定義view
2蠢络、使用lib引入第三方字體
字體資源入門
Android O通過字體資源支持自定義字體社裆。在app / res文件夾中新建文件夾弹砚,
創(chuàng)建字體文件夾很容易.就像創(chuàng)建 menu, values, drawable等等双仍。
所以右鍵單擊res文件夾并創(chuàng)建一個(gè)新font文件夾。
字體格式
Android O支持.otf(OpenType)和.ttf(TrueType)字體格式桌吃。
我現(xiàn)在創(chuàng)建一個(gè)簡(jiǎn)單的頁面朱沃。像一本書,標(biāo)題是大型襯線字體茅诱。
在Android O中使用自定義字體資源
對(duì)于這篇Android O的文章逗物,我將從Google字體中選擇我的字體。
我的兩個(gè)字體選擇是:
1瑟俭、Merriweather
2翎卓、Lato
以下是Merriweather的可用字體樣式。
您可以下載您選擇的.otf或.ttf字體摆寄,并將它們放在res / fonts文件夾中失暴。
請(qǐng)注意,資源文件應(yīng)使用小寫字母和下劃線微饥。例如逗扒,下載的字體是Merriweather-Regular.ttf。當(dāng)您將其復(fù)制到res / fonts文件夾時(shí)欠橘,將其重命名為merriweather_regular.ttf矩肩。
一旦您放入fonts文件夾中的自定義字體文件,就可以預(yù)覽字體简软。只需雙擊一個(gè)字體蛮拔,Android Studio會(huì)預(yù)覽字體。
轉(zhuǎn)到您的XML布局文件痹升。我們跳過布局設(shè)計(jì)建炫,直接使用我們的字體。
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/merriweather_regular"/>
這是我簡(jiǎn)單的TextView疼蛾。需要使用里面的一個(gè)屬性肛跌,是的,就是這么簡(jiǎn)單!
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);
如果您使用的是字體系列,則會(huì)有相同的字體末荐,權(quán)重不同侧纯。
你知道我在說什么,如果你下載一個(gè)字體并解壓縮.zip文件甲脏,你會(huì)得到這樣的多種字體變體眶熬。
所以例如,假設(shè)我正在使用Merriweather-Regular块请。如果將字體樣式設(shè)為粗體娜氏,Android將從我的字體系列中選擇Merriweather-Bold,并顯示负乡。
使用字體系列
如上所述牍白,如果您想在不同的樣式中使用相同的字體呢脊凰?好的抖棘,也許你可以使用粗體或斜體的默認(rèn)字體樣式。但是如果你想要更薄的字體呢狸涌?薄而斜體切省?
創(chuàng)建一個(gè)字體系列
3個(gè)簡(jiǎn)單的步驟就可以做到這一點(diǎn)。
1帕胆、右鍵單擊res / fonts文件夾并創(chuàng)建一個(gè)新的“ 字體資源文件 ”朝捆。
2、為要包含的每個(gè)字體變體添加一個(gè)元素懒豹。讓我們回到我們想要做的設(shè)計(jì)芙盘。字體樣式很薄,粗體和斜體將是很好的脸秽。所以我們?cè)偌尤齻€(gè)儒老。
我只想改變body內(nèi)容的字體。所以我們?yōu)長(zhǎng)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字體將解除您的疑問。
之后,使用來自字體系列的單個(gè)字體是一樣的囚衔。只需通過字體屬性引用它們
android:fontFamily="@font/lato_black"
只要記住首先將所有的字體變體添加到字體文件夾挖腰。然后創(chuàng)建一個(gè)“ 字體資源文件 ”。然后添加每個(gè)字體變體的元素练湿。最后猴仑,參考你的字體風(fēng)格就像一個(gè)常規(guī)的單一字體。
自定義字體樣式的可讀性
在字體上直接使用字體TextView并不能保證良好的可讀性肥哎。我們來看看宁脊。
這看起來很困難,所以如果您的應(yīng)用程序的優(yōu)先級(jí)是用戶閱讀內(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)該很容易閱讀。
如果您很難記住不同的屬性砰碴,請(qǐng)使用XML編輯器中的“ 設(shè)計(jì) ”窗格躏筏。右側(cè)的“ 屬性 ”窗格列出了您可以更改的所有可用屬性。
最終結(jié)果
哪里能了解更多的信息呈枉?
使用自定義字體資源只是Android O中的新功能之一趁尼。您可以在這里閱讀其他Android O功能。