IconFont的制作及在Android的使用

本文介紹的內(nèi)容對應(yīng)的Github項目地址:IconFontApp

上一節(jié)提到讼稚,如果項目中很多自定義的圖標叽掘,或者是各種不同來源的圖標飒货,我們可以通過對Iconify進行擴展來實現(xiàn)感凤,但是在擴展之前我們需要制作自己的圖標字體文件丸相,那么圖標字體文件該如何制作呢?這個可以試試Fontello竟秫、Icomoon或者IconFont吧娃惯!

(制作圖標字體的方法有很多,可以參考這里肥败,本文主要介紹的是如何快速利用已有的圖標制作字體文件然后在應(yīng)用中使用)

1.Fontello: icon font generator

Fontello網(wǎng)址:http://fontello.com/
Github地址:https://github.com/fontello/fontello

Fontello是個圖標字體生成器趾浅,通過它可以把一些圖標作成字體放到自己的項目中。在Fontello主頁上可以訪問大量專業(yè)級的開源圖標馒稍,并支持添加自定義的圖標(SVG格式)潮孽,而且可以在網(wǎng)站上選擇不同來源的圖標合并到單個字體文件中。此外筷黔,它還可以自定義每個圖標的名稱以及對應(yīng)的Unicode碼往史,一切配置好了之后可以將圖標字體下載下來放到項目中使用。如下圖所示佛舱,我添加了兩個Custom Icons椎例,從Fontelico中選了6個圖標,從Font Awesome中選了3個圖標等请祖,最終導(dǎo)出得到的圖標字體文件就會包含這些我需要的圖標订歪。

fontello

自定義圖標名稱和對應(yīng)的Unicode:在頁面頂部的配置中可以選擇設(shè)置圖標名稱的前綴,例如fe-

fontello-name

fontello-code

下載之后得到一個zip文件肆捕,解壓之后打開demo.html可以看到該圖標字體中的所有圖標的名稱和對應(yīng)的Unicode

fontello-nocode

fontello-showcode

同時刷晋,在解壓后的font文件夾中有我們需要的ttf字體文件fontello.ttf,下面介紹下詳細的擴展實現(xiàn)步驟慎陵。

(1)新建一個Android Studio項目眼虱,在app中添加對Iconify的依賴

compile 'com.joanzapata.iconify:android-iconify:2.2.2'

(2)新建assets文件夾,并將字體文件fontello.ttf拷貝到文件夾下
(3)新建FontelloModule類席纽,實現(xiàn)IconFontDescriptor接口捏悬,內(nèi)容如下:

public class FontelloModule implements IconFontDescriptor {

    @Override
    public String ttfFileName() {
        return "fontello.ttf";
    }

    @Override
    public Icon[] characters() {
        return FontelloIcons.values();
    }
}

(4)新建FontelloIcons枚舉,實現(xiàn)Icon接口润梯,內(nèi)容如下:

public enum FontelloIcons implements Icon {
    fe_spin1('\uE800'),
    fe_spin2('\uE801'),
    fe_spin3('\uE802'),
    fe_spin4('\uE803'),
    fe_spin5('\uE804'),
    fe_github('\uE816');//注:這里我并沒有把所有的圖標都加上

    char character;

    FontelloIcons(char character) {
        this.character = character;
    }

    @Override
    public String key() {
        return name().replace('_', '-');
    }

    @Override
    public char character() {
        return character;
    }
}

(5)測試:在activity_main.xml布局文件中添加一個IconTextView

<com.joanzapata.iconify.widget.IconTextView
    android:id="@+id/iconTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_centerHorizontal="true"
    android:text="{fe-github} {fe-spin1 spin} {fe-spin2 spin} {fe-spin3 spin} {fe-spin4 spin} {fe-spin5 spin}"
    android:textSize="20sp"
    android:textColor="@android:color/black"/>

然后在MainActivityonCreate方法最后添加初始化操作

Iconify.with(new FontelloModule());

運行應(yīng)用看到效果見文章末尾的截圖过牙,圖標可以設(shè)置為旋轉(zhuǎn)效果的喲,有點炫胺拿寇钉!

2.IcoMoon

IcoMoon網(wǎng)址:https://icomoon.io/app/
IcoMoon和Fontello一樣,既可以添加自己的圖標舶赔,又可以從其他的圖標庫中選擇圖片扫倡,而且也支持設(shè)置圖標的名稱和Unicode,最終還能導(dǎo)出得到圖標字體文件顿痪。IcoMoon導(dǎo)出得到的zip文件和Fontello導(dǎo)出的結(jié)果類似镊辕,使用它的ttf文件對Iconify進行擴展的方式也一樣油够。

3.IconFont

IconFont網(wǎng)址:http://www.iconfont.cn/
IconFont可是中文的圖標字體制作網(wǎng)站喲!該網(wǎng)站是阿里的UED團隊做的吧征懈,在該網(wǎng)站可以方便地管理圖標和制作圖標字體文件石咬。網(wǎng)站的幫助中Android端應(yīng)用教程介紹了如何使用下載得到的IconFont,這個比較簡單卖哎。但是鬼悠,需要注意的是,下載下來的demo.html中看到的圖標對應(yīng)的編碼用的是UTF-8表示的亏娜,并不是Unicode編碼焕窝。此外,TextView的setText方法在使用的時候维贺,如果傳遞的參數(shù)是R.string.xxx的形式的話它掂,最終顯示的時候?qū)?yīng)的字符串會自動轉(zhuǎn)成Unicode編碼;但是如果傳遞的參數(shù)是某個字符串的話溯泣,該字符串默認會被視為Unicode編碼虐秋,也就是說如果它原來不是Unicode編碼這個時候顯示就會出現(xiàn)異常!

看下下面的代碼就清楚了垃沦,下面顯示了4中不同的調(diào)用方式客给,并給出了不同方式下的顯示結(jié)果


iconfontapp-code

關(guān)于如何將UTF-8編碼的形式改成Unicode編碼的形式可以參考其他的文檔,但是這里的轉(zhuǎn)換比較簡單肢簿,只要抽取出其中的16位表示形式就行了靶剑,例如UTF-8編碼的對應(yīng)的Unicode編碼就是\ue601,其中的16位表示形式是e601池充,其他的同理桩引。

項目IconFontApp運行起來的效果如下圖所示:

iconfontapp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市纵菌,隨后出現(xiàn)的幾起案子阐污,更是在濱河造成了極大的恐慌,老刑警劉巖咱圆,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異功氨,居然都是意外死亡序苏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門捷凄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忱详,“玉大人,你說我怎么就攤上這事跺涤⌒僬觯” “怎么了监透?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長航唆。 經(jīng)常有香客問我胀蛮,道長,這世上最難降的妖魔是什么糯钙? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任粪狼,我火速辦了婚禮,結(jié)果婚禮上任岸,老公的妹妹穿的比我還像新娘再榄。我一直安慰自己,他們只是感情好享潜,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布困鸥。 她就那樣靜靜地躺著,像睡著了一般剑按。 火紅的嫁衣襯著肌膚如雪疾就。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天吕座,我揣著相機與錄音虐译,去河邊找鬼。 笑死吴趴,一個胖子當著我的面吹牛漆诽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锣枝,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厢拭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撇叁?” 一聲冷哼從身側(cè)響起供鸠,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陨闹,沒想到半個月后楞捂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡趋厉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年寨闹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片君账。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡繁堡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情椭蹄,我是刑警寧澤闻牡,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站绳矩,受9級特大地震影響罩润,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埋酬,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一哨啃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧写妥,春花似錦拳球、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扎筒,卻和暖如春莱找,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗜桌。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工奥溺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骨宠。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓浮定,卻偏偏與公主長得像,于是被迫代替她去往敵國和親层亿。 傳聞我的和親對象是個殘疾皇子桦卒,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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