圖片資源優(yōu)化:iconfont整理分享

摘要:由于公司的項(xiàng)目里使用了iconfont來部署圖片,解決了每套圖片還需要設(shè)置1x@,2x@,3x@等問題,今天索性來個(gè)而整理分享,方便自己也與方便他人。 ---贈(zèng)人玫瑰,手有余香。


簡(jiǎn)介

IconFont技術(shù)起源于Web領(lǐng)域的Web Font技術(shù)。隨著時(shí)間的推移,網(wǎng)頁(yè)設(shè)計(jì)越來越漂亮。但是電腦預(yù)裝的字體遠(yuǎn)遠(yuǎn)無法滿足設(shè)計(jì)者的要求,于是Web Font技術(shù)誕生了。一個(gè)英文字庫(kù)并不大,通過網(wǎng)絡(luò)下載字體,完成網(wǎng)頁(yè)的顯示。有了Web Font技術(shù),大大提升了設(shè)計(jì)師的發(fā)揮空間。

網(wǎng)頁(yè)設(shè)計(jì)中圖標(biāo)需要適配多個(gè)分辨率,每個(gè)圖標(biāo)需要占用一次網(wǎng)絡(luò)請(qǐng)求。于是有人想到了用Web Font的方法來解決這兩個(gè)問題,就是IconFont技術(shù)。將矢量的圖標(biāo)做成字體,一次網(wǎng)絡(luò)請(qǐng)求就夠了,可以保真縮放。解決這個(gè)問題的另一個(gè)方式是圖片拼合的Sprite圖。

Web領(lǐng)域使用IconFont類似的技術(shù)已經(jīng)多年,當(dāng)我在15年接觸BootStrap的時(shí)候Font Awesome技術(shù)大行其道。最近IconFont技術(shù)在iOS圖片資源方面得以應(yīng)用,最近有點(diǎn)時(shí)間自己研究整理了一番,在此記錄學(xué)習(xí)點(diǎn)滴。

優(yōu)點(diǎn)

  • 由于IconFont是矢量圖標(biāo),所以可以輕松解決圖標(biāo)適配問題
  • 一套圖標(biāo)資源可以在不同平臺(tái)使用(android ,ios,web)
  • 減小體積,字體文件比圖片要小
  • 圖標(biāo)保真縮放,解決2x/3x乃至將來的nx圖問題
  • 方便更改顏色大小,圖片復(fù)用

缺點(diǎn)

  • 只適用于純色icon
  • 使用unicode字符難以理解
  • 需要維護(hù)字體庫(kù)

獲取iconfont


制作步驟

step1:

從 iconfont 平臺(tái)選擇要使用到的圖標(biāo)(如圖),并下載(選擇下載代碼)至本地;復(fù)制字體文件到項(xiàng)目 assets 目錄;
image

image
step2:

打開下載下來的文件,并在目錄中打開 demo_unicode.html,找到圖標(biāo)相對(duì)應(yīng)的 HTML 實(shí)體字符碼
image

image
step3:

打開 res/values/strings.xml,把 demo_unicode.html 各個(gè)圖標(biāo)的 字符嗎 添加到 string 值;
如:

<string name="all"></string>
<string name="back"></string>
<string name="cart"></string>
<string name="category"></string>
<string name="close"></string>
<string name="comments"></string>
<string name="cry"></string>
step4:

比如使用 圖標(biāo) cart,打開 activity_main.xml,添加 string 值到

TextView:
<TextView android:id="@+id/like" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:text="@string/cart" />

對(duì)該 TextView 設(shè)置顏色、大小就等同于給圖標(biāo) cart 設(shè)置顏色、大小。而且還不用考慮分辨率問題。

step5:

為 TextView 指定字體庫(kù):

import android.graphics.Typeface;

protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main);
Typeface iconfont = Typeface.createFromAsset(getAssets(), 
"iconfont/iconfont.ttf"); 
TextView textview = (TextView)findViewById(R.id.like); 
textview.setTypeface(iconfont);}

通過以上 5 步,就可以實(shí)現(xiàn)目的了。


這就是iconfont的使用,是不是很簡(jiǎn)單。
當(dāng)然你也可以將你的TextView或Typeface封裝起來,在自己項(xiàng)目中的BaseActivity


如果您感覺滿意, 請(qǐng)記得點(diǎn)贊,多謝支持!
也可以加我的QQ或微信:741547004 || rivenlee
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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