前言
來繼續學習SVG,要想深入了解還是要多動手進行實戰。關於svg基礎可以去看一下我的上一篇文章《SVG前戲—讓你的View多姿多彩》,今天就用SVG打造一個精美的UI效果。
正文
先上效果圖:

開啟線程池,進行繪制

選擇省份
我們都知道SVG的文件是純粹的 XML。如:


[圖片上傳中...(12345.gif-60d52c-1533723732988-0)]

123.gif
看到這里,我們都明白了。原來里面類似以path的數據進行組裝的。只需要進行解析xml就可以了。
解析關鍵代碼:

關鍵點:還是在於UI繪制的時候,把解析到的數據進行分片繪制。這里用是path和region互相結合的一個算法。另外剛開始解析數據的時候,我開起了線程池進行繪制刷新的。詳細可參考demo!
<path/>路徑的路徑描述指令含義表:
- M = moveto 相當於 android Path 里的moveTo(),用於移動起始點
- L = lineto 相當於 android Path 里的lineTo(),用於畫線
- H = horizontal lineto 用於畫水平線
- V = vertical lineto 用於畫豎直線
- C = curveto 相當於cubicTo(),三次貝塞爾曲線
- S = smooth curveto 同樣三次貝塞爾曲線,更平滑
- Q = quadratic Belzier curve quadTo(),二次貝塞爾曲線
- T = smooth quadratic Belzier curveto 同樣二次貝塞爾曲線,更平滑
- A = elliptical Arc 相當於arcTo(),用於畫弧
- Z = closepath 相當於closeTo(),關閉path
大寫代表絕對位置, 小寫代表相對位置。
SVG里面還有各種標簽:
包括line直線,circle圓,rect矩形,eliipse橢圓,polygon多邊形,等等
這些只要我們又一個SVG文件,都可以將其轉換成java代碼


地圖項目地址:
備注:該demo僅為學習Android提供思路用,我很愛國的!

該demo僅為學習Android提供思路用,我很愛國的
閱讀更多
總結
作為一個程序員,我們當然不能手動去做這個工作,那就涉及兩個問題,一個是SVG的解析,一個是解析后的繪制。雖然有人已經完成了這個工作,但我覺得還是自己動手敲一遍為好!任何時候不要太過於依賴第三方的。
相信自己,沒有做不到的,只有想不到的
歡迎關注我公眾號:終端研發部,在這里獲得的不僅僅是技術!