高级UI特效—用SVG码造一个精美的中国地图

前言

来继续学习SVG,要想深刻了解仍是要多动手进行实战。关于svg基础能够去看一下个人上一篇文章《SVG前戏—让你的View多姿多彩》,今天就用SVG打造一个精美的UI效果。java

正文

先上效果图:android

开启线程池,进行绘制

选择省份

咱们都知道SVG的文件是纯粹的 XML。如:git

[图片上传中...(12345.gif-60d52c-1533723732988-0)]程序员

123.gif

看到这里,咱们都明白了。原来里面相似以path的数据进行组装的。只须要进行解析xml就能够了。github

解析关键代码:面试

关键点:仍是在于UI绘制的时候,把解析到的数据进行分片绘制。这里用是path和region互相结合的一个算法。另外刚开始解析数据的时候,我开起了线程池进行绘制刷新的。详细可参考demo!算法

路径的路径描述指令含义表:
  • 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

SVG里面还有各类标签:学习

包括line直线,circle圆,rect矩形,eliipse椭圆,polygon多边形,等等 这些只要咱们又一个SVG文件,均可以将其转换成java代码ui

地图项目地址:

https://github.com/androidstarjack/MySvgYuyahaoDrawChinaMap

备注:该demo仅为学习Android提供思路用,我很爱国的!

该demo仅为学习Android提供思路用,我很爱国的

阅读更多

终于,我仍是下决心学Java后台了

谈一下Application和Context

金9银10的面试黄金季节,分享几个重要的面试题

谈一下Application和Context

总结

做为一个程序员,咱们固然不能手动去作这个工做,那就涉及两个问题,一个是SVG的解析,一个是解析后的绘制。虽然有人已经完成了这个工做,但我以为仍是本身动手敲一遍为好!任什么时候候不要太过于依赖第三方的。

相信本身,没有作不到的,只有想不到的

欢迎关注我公众号:终端研发部,在这里得到的不单单是技术!

技术+职场
相关文章
相关标签/搜索