TWaver矢量小试——Android演进路线图
还有半个多月就到春节了,年底相信很多公司都会进行年度总结以及公司发展状况总结,在这过程中难免会用到RoadMap,在这我们也使用TWaver的矢量部分绘制一个Android系统的发展历程。先看效果:
什么,最里面Android 1.0的气泡看不清?没关系,放大下ok。
先来绘制一条road:
twaver.Util.registerImage('road', {
w: 880,
h: 370,
origin:{ x: 0, y: 0 },
v: [{
shape: 'rect',
rel: true,
rect: [ 0, 0, 1, 1],
lineColor:'red',
lineWidth: 1,
visible: debug,
},{
shape: 'path',
data: 'M850,10C50,140,50,160,400,173C900,180,900,205,400,210C0,220,0,250,850,280L850,360C-50,290,-50,200,400,200C850,195,850,190,400,178C40,160,40,135,850,8z',
fill:'#E3E3E3',
lineWidth:0,
}],
});

绘制一个bubble,可以添加一些动画:
twaver.Util.registerImage('bubble', {
w: 100,
h: 120,
origin:{ x: 0, y: 0 },
scale: { x: '<%=getClient("scale")%>', y: '<%=getClient("scale")%>' },
v: [{
shape: 'rect',
rel: true,
rect: [ 0, 0, 1, 1],
lineColor:'red',
lineWidth: 1,
visible: debug,
},{
shape: 'path',
data: 'M50,100Q10,65,10,60C0,50,0,0,50,0C100,0,100,50,90,60Q90,65,50,100',
fill:'<%=getClient("color")%>',
lineWidth:0,
rotate:0,
},{
shape: 'circle',
cx: 49,
cy: 48,
r:42,
startAngle: 180,
endAngle: 360,
fill:'#EFEFEF',
lineWidth:0,
},{
shape: 'text',
text: '<%=getClient("year")%>',
x:50,
y:110,
fill:'white',
textAlign: 'center',
textBaseline: 'middle',
font: '14px "Microsoft Yahei"',
},{
shape: 'text',
text: '<%=getClient("title")%>',
x:50,
y:33,
fill:'black',
textAlign: 'center',
textBaseline: 'middle',
font: '16px "Microsoft Yahei" bold',
},{
shape: 'text',
text: '<%=getClient("description")%>',
x:50,
y:60,
fill:'white',
textAlign: 'center',
textBaseline: 'middle',
font: '10px "Microsoft Yahei"',
}],
});

绘制belt:
twaver.Util.registerImage('belt', {
w: 500,
h: 400,
origin:{ x: 0, y: 0 },
v: [{
shape: 'rect',
rel: true,
rect: [ 0, 0, 1, 1],
lineColor:'red',
lineWidth: 1,
visible: debug,
},{
shape: 'path',
data: 'M30,50L400,50C500,50,500,200,400,200L100,200C0,200,0,350,100,350L450,350',
lineColor:'#DDDDDD',
lineWidth:34,
},{
shape: 'path',
data: 'M30,50L30,33L15,33L30,50L15,67L30,67L30,50M449,330l15,20l-15,20',
fill:'#DDDDDD',
lineWidth:0,
},{
shape: 'path',
data: 'M100,50L400,50C500,50,500,200,400,200L100,200C0,200,0,350,100,350L380,350',
lineColor:'black',
lineWidth:1.5,
},{
shape: 'path',
data: 'M30,50L100,50M380,350L465,350',
lineColor:'black',
lineDash: [2, 3],
lineWidth:1.5,
}],
});
再添加年份以及一些文字:
twaver.Util.registerImage('egg', {
w: 60,
h: 60,
origin: {x:0,y:0},
v: [{
shape: 'rect',
rel: true,
rect: [ 0, 0, 1, 1],
lineColor:'red',
lineWidth: 1,
visible: debug,
},{
shape: 'circle',
rel: true,
cx: 0.5,
cy: 0.5,
r: 25,
fill:'#DDDDDD',
lineWidth:0,
},{
shape: 'circle',
rel: true,
cx: 0.5,
cy: 0.5,
r: 18,
fill:'<%=getClient("color")%>',
lineWidth:0,
},{
shape: 'text',
text: '<%=getClient("year")%>',
rel:true,
x:0.5,
y:0.5,
fill:'white',
textAlign: 'center',
textBaseline: 'middle',
font: '12px "Microsoft Yahei" bold',
}],
});
var createText=function(parent,title,text,x,y,left){
var node = new twaver.Follower();
node.setHost(parent);
node.setName(title);
node.setStyle('label.color','#DF013A');
node.setStyle('label.position','right.right');
if(left){
node.setStyle('label.position','right.left');
}
node.setStyle('label.font','bold 10px "Microsoft Yahei"');
node.setImage(null);
node.setLocation(x,y);
box.add(node);
var node = new twaver.Follower();
node.setHost(parent);
node.setName(text);
node.setStyle('label.color','black');
node.setStyle('label.position','right.right');
if(left){
node.setStyle('label.position','right.left');
}
node.setStyle('label.font','10px "Microsoft Yahei"');
node.setImage(null);
node.setLocation(x,y+12);
box.add(node);
};
createText(belt,'Android Bate','代表手机:HTC Dream(G1)',5,445);
createText(belt,'Android 1.0系统发布','代表手机:HTC Hero(G3)',90,365);
createText(belt,'Android 2.0系统发布','代表手机:摩托罗拉 Milestone ',185,445);
createText(belt,'Android 2.3系统发布','代表手机:三星 Galaxy II i9100 ',280,480);
createText(belt,'Android 3.0系统发布','代表手机:摩托罗拉 XOOM平板电脑',37,475);
createText(belt,'Android 4.0系统发布','代表手机:GALAXY Nexus',37,500);
createText(belt,'Android 4.1/4.2/4.3系统发布','代表手机:Nexus 7平板电脑',-65,585);
createText(belt,'Android 4.4系统发布','Nexus 4、Nexus 7、Nexus 10以及原生版HTC One、Galaxy S4SHIELD',36,684);
createText(belt,'Android 5.0系统发布','Nexus 6、Nexus 9平板及 Nexus Player ',135,605);
这样一个简单的RoadMap就制作完成了,是不是很简单。我们依然可以将矢量+动画相结合制作出更加丰富的RoadMap,后续我们也不断退出一些更加丰富的RoadMap,当然也欢迎您来一试身手,如果有需求,可以邮件联系我们。
jeff.fu@servasoft.com
TWaver矢量小试——Android演进路线图的更多相关文章
- 我的微软.net演进路线图
原文地址:我的微软.net演进路线图 我的微软.net演进路线图 我的这几年,编程方面主要是跟在微软旗下奔跑的,主要语言是C# 集成开发环境(IDE) .NET Framework版本 介入年份 Vi ...
- java+android学习路线图
java.android学习路线图 看图之前先按住Ctrl键同时滑动鼠标滚轮
- TMF接口标准MTOSI演进路线图
下图为TMF接口标准MTOSI的演进路线图.MTOSI 2.1基于mTOP框架制定,MTOSI 3.0->MTOSI 4.0->MTOSI 5.0将逐步基于全新的TIP框架实现.例如,MT ...
- 自动换行的矢量文字(android demo)
由于矢量字体的宽度不同,自测android字体,发现当中文字体大小为100像素时,字母s等 宽度大概在52,字母l等 宽度大概在26,这样自动换行就不可以按字符的个数计算截取每行显示的字串. 直接上代 ...
- Android技术路线图
邮件问题: 老师你好,我从去年就在看你的关于Android的视频了,的确讲的不错,去年看了一段时间,寒假的时候回家重新复习了一下Java基础知识,开学的时候看到你又陆续出了一些视频,这段时间看完了,跟 ...
- 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图.另一份 Android 开发学习路线图.可惜不是MarkDown格式的,所以jixiaohua直接上传的截图,在jixiao ...
- Android学习路线图
第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...
- 一个老鸟发的公司内部整理的 Android 学习路线图
基础工具部分: 中文手册,我猜测是Maven中文手册,可是我并没有找到这样的资源,欢迎知道的朋友告诉我: Android部分有 『第三方库集合』,我没能找到资源地址: 书籍我大多是给的豆瓣链接,如果觉 ...
- Android 学习路线图(转载自https://blog.csdn.net/lixuce1234/article/details/77947405)
程序设计 一.java (a)基本语法(如继承.异常.引用.泛型等) Java核心技术 卷I(适合入门) 进阶 Effective Java中文版(如何写好的Java代码) Java解惑 (介绍烂Ja ...
随机推荐
- Codeforces Round #233 (Div. 2)D. Painting The Wall 概率DP
D. Painting The Wall ...
- Vijos 1451 圆环取数 【区间DP】
背景 小K攒足了路费来到了教主所在的宫殿门前,但是当小K要进去的时候,却发现了要与教主守护者进行一个特殊的游戏,只有取到了最大值才能进去Orz教主…… 描述 守护者拿出被划分为n个格子的一个圆环,每个 ...
- go语言---for
go语言---for https://blog.csdn.net/cyk2396/article/details/78873930 执行以下代码,发现无法跳出for循环: func SelectTes ...
- Tarjan求桥
传送门(poj3177) 这道题是Tarjan求桥的模板题.大意是要求在原图上加上数量最少的边,使得整张图成为一个边双联通分量. 具体的做法是,先在图中求出所有的桥,之后把边双联通分量缩成点,这样的话 ...
- 如何在linux 32位机器编译64位程序
编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序. 编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64 ...
- 【转载】存储的一些基本概念(HBA,LUN)
1.关于HBA HBA的全称为Host Bus Adapter,即主机总线适配器. a.总线适配器是个什么东西呢? 我们首先要了解一下主机的结构,一台计算机内部多半由两条总线串在起来(当然实际情况会 ...
- Netty,Thrifty
小白科普:Netty有什么用? https://mp.weixin.qq.com/s/PTKnRQ_hLf8BBPYnywLenA Thrifty 是基于.net Attribute 实现了标准 Th ...
- codeforces 949C - Data Center Maintenance【tarjan】
首先转换图论模型,把某个客户一个终端的维修时间(+1)%h之后和另一个终端维修时间一样,这样的两个终端连一条有向边,表示推后一个终端就必须推后另一个 然后tarjan缩点,一个scc里的终端是要一起推 ...
- Linux day01(一) 创建Linux虚拟机,设置虚拟机默认属性,虚拟机和Xhell建立连接
一:创建Linux虚拟机步骤: 1. 二:设置虚拟机默认属性 三:虚拟机和Xhell建立连接
- Windows 使用之那些你还不知道操作
作者:你未读 整理:君未读 关于使用 win 系统的基本普及. 建议更换 win10 系统 可能很多朋友看到这个建议,心里很不爽,还很不服气,别急,且看官方给出的信息. 也就是说在 2019 年你完全 ...