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è)簡(jiǎn)單的頁面朱沃。像一本書,標(biāo)題是大型襯線字體茅诱。

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

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

對(duì)于這篇Android O的文章逗物,我將從Google字體中選擇我的字體。

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

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

您可以下載您選擇的.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ù)覽字體。

字體預(yù)覽.png

轉(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);
自定義字體樣式.png

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

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

字體資源.png

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

使用字體系列

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

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

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

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

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字體將解除您的疑問。

谷歌字體下載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)先級(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)該很容易閱讀。

前后對(duì)比.png

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


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

最終結(jié)果

修改后的.png

哪里能了解更多的信息呈枉?

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

快樂工作猖辫,享受編程酥泞!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啃憎,隨后出現(xiàn)的幾起案子芝囤,更是在濱河造成了極大的恐慌,老刑警劉巖辛萍,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悯姊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贩毕,警方通過查閱死者的電腦和手機(jī)悯许,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耳幢,“玉大人岸晦,你說我怎么就攤上這事欧啤。” “怎么了启上?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵邢隧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我冈在,道長(zhǎng)倒慧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任包券,我火速辦了婚禮纫谅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溅固。我一直安慰自己付秕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布侍郭。 她就那樣靜靜地躺著询吴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亮元。 梳的紋絲不亂的頭發(fā)上猛计,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音爆捞,去河邊找鬼奉瘤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛煮甥,可吹牛的內(nèi)容都是我干的盗温。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼苛秕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼肌访!你這毒婦竟也來了找默?” 一聲冷哼從身側(cè)響起艇劫,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惩激,沒想到半個(gè)月后店煞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡风钻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年顷蟀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骡技。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸣个,死狀恐怖羞反,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情囤萤,我是刑警寧澤昼窗,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站涛舍,受9級(jí)特大地震影響澄惊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜富雅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一掸驱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧没佑,春花似錦毕贼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至远剩,卻和暖如春扣溺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓜晤。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工锥余, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痢掠。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓驱犹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親足画。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雄驹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

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