好了,android 中的 SVG 我們都草草的看了一遍,雖說不會(huì)什么高深的應(yīng)用,但是最起碼我們可以簡單的使用了。這就是基礎(chǔ)啊,各位,基礎(chǔ)最重要,要是這些基礎(chǔ)的 SVG 使用你都不會(huì),那談何去看別人使用 SVG 寫作的高級(jí)效果和應(yīng)用呢,我在學(xué)習(xí)過程中總是碰到這種基礎(chǔ)知識(shí)上的缺失。
好了,關(guān)于 SVG 我們還是有一些東西要補(bǔ)充進(jìn)來的
SVG 輔助工具
很多時(shí)候 uI 不會(huì)提供 SVG 給我們,這就需要我們自己去轉(zhuǎn)換成SVG 啦
SVG在線制作網(wǎng)站
要翻墻vectormagic軟件, 有 window/Mac,可以把位圖轉(zhuǎn)成 SVG矢量圖,Mac 版本的我試了下不花錢總是不成功,window 的沒事,破解也好找,mac 的真頭疼
iconfont
阿里大媽的圖片資源站,里面的圖片可以出 png 和 svg 的,不過都是個(gè)人設(shè)計(jì)的,有些 svg 可能不是標(biāo)準(zhǔn)的 path,也提供字體svg圖片,文章下面有介紹vector Magic
免費(fèi)次數(shù)有限, PNG 圖片轉(zhuǎn)SVGonline-convert
PNG 圖片轉(zhuǎn)SVGsvg2android
一個(gè)網(wǎng)站直接上傳你的svg圖片就能生成Vectordrawable,android 中使用的不是標(biāo)準(zhǔn) SVG,這個(gè)我們可能需要svg path 解析網(wǎng)站
很方便的可以查看,提取 svg 圖片中的 path 路徑
animated-selector 矢量選擇器
選擇器 selector 我們使用的很多了,選擇器讓我們可以在控件不同狀態(tài)時(shí)顯示不同的圖片,恩很好,但是還差了點(diǎn)什么。對(duì),就是變化,就是狀態(tài)改變時(shí)的切換動(dòng)畫,結(jié)合 SVG 圖片,SVG 動(dòng)畫,這就誕生了animated-selector 矢量選擇器,可以在狀態(tài)切換時(shí)指定執(zhí)行某一個(gè)矢量動(dòng)畫,幀動(dòng)畫也是可以支持的,具體的看下例子吧,我就不寫了,主要是 path 不會(huì)畫呀...
學(xué)習(xí)例子在這里 Android高級(jí)動(dòng)畫(2)
SVG 的其他實(shí)現(xiàn)
在 android 平臺(tái)上除了google 提供的支持外,我們還可以使用一些第三方工具提取svg 圖片中的 path 路徑,然后把這些 String 的path 路徑轉(zhuǎn)成 canvas 中的 path對(duì)象,就可以直接在canvas 上繪制出來了,另外結(jié)合ObjectAnimator動(dòng)畫還可以實(shí)現(xiàn)自動(dòng)一的 SVG 動(dòng)畫,靈活性比 google 的 AnimatedVectorDrawable 要靈活一些,當(dāng)然簡單性上是比不了的,下面有2個(gè)不過的實(shí)現(xiàn),第一個(gè)很老了,第二個(gè)是國人寫的,很友好,適合大家學(xué)習(xí),這期中的基礎(chǔ)就是 path 繪制了,學(xué)會(huì)后你會(huì)發(fā)現(xiàn)其實(shí)沒什么,但是不學(xué)不研究你就是不會(huì),android 的基礎(chǔ)知識(shí)很重要的,很多應(yīng)用你看著很高大上,其實(shí)研究過后都是對(duì)android基礎(chǔ)知識(shí)的應(yīng)用。
path 相關(guān)基礎(chǔ)知識(shí)
感謝GcsSsloop魔法師給我們提供了如此優(yōu)秀的 canvas 基礎(chǔ)知識(shí)教程,注意這是成體系的基礎(chǔ)教程,非常難得,目前是學(xué)習(xí) canvas 這塊最好的了,沒有之一。講解到位,簡練,提供了不少學(xué)習(xí) demo。pathview 這個(gè)比較老了,而且有的 path 解析有問題。學(xué)習(xí)筆記
PathAnimView 這個(gè)很新,還是國人寫的,一直在維護(hù),文檔很友好。是一個(gè)學(xué)習(xí) 自定義 view path 繪制的好文,內(nèi)容包含 path 的逐漸填充,殘影效果。推薦學(xué)習(xí)!
關(guān)于 svg 轉(zhuǎn) path對(duì)象的庫大家可以從第二個(gè)庫里提取,也可以自己去 github 上找
SVG 學(xué)習(xí)例子
-
GoogleClock
一個(gè)兄弟使用 SVG 寫的數(shù)字變換,使用的 pathData 做的動(dòng)畫,話說我看過之后沒看懂他這2個(gè)關(guān)鍵點(diǎn)對(duì)不上的 path 路徑是怎么做的 pathData 變換動(dòng)畫的,我自己提出path 試了下報(bào)錯(cuò)了,path 轉(zhuǎn)變失敗...哪位看懂了在這里說下啊。

-
AnimatedVectorDrawable實(shí)現(xiàn)可愛的圖釘跳躍動(dòng)畫
一個(gè)很棒的 SVG 學(xué)習(xí)例子哦
-
SVG_Demo
使用一個(gè)第三方pathview 在 canvas 上繪制 path,話說這個(gè)只看懂到這了,至于里面那個(gè)畫筆的軌跡動(dòng)作我是沒看懂

SVG資源庫
- 阿里大媽的 Iconfont 豐富的矢量圖標(biāo)庫,提供矢量圖標(biāo)下載、在線存儲(chǔ)、格式轉(zhuǎn)換等功能。重點(diǎn)是可以把你喜歡的 svg 圖片打包成 ttf 字體,然后在 textview 中使用,當(dāng)然有限制啦,這樣就支持單色啦,看圖
因?yàn)槭褂玫氖亲远x打包的字體 ttf,所以可以支持 textview,但是注意字體 SVG 圖片的大小是和字體一樣大的哦
大家注意沒有,我本想使用3個(gè)字體 SVG,但是部分 SVG 顯示有問題,我的字體 uicode: "android:text="今天很高興 \ue603,\uf0347,\ue604"", 坑爹的是阿里大媽對(duì)于這\uf3047這樣帶 f 的5為的 uicode 顯示不出來,不知道為啥啊。
好了吐槽了一下大媽,但是阿里大嗎還是很給力的,svg 圖片資源很豐富的,我們不使用 ttf,還可以下載 svg 圖片來使用的嘛