客户的需求就是我们进步的动力。
最近有客户提出大数据量Topo图的自动布局问题,在Topo中除了Node、Link,还包括Group、Subnetwork等容器组件。在这样的情况下,我们抛开布局算法不谈,主要分析如何提高布局的性能,如何让TWaver能够支持更强大的数据量,让整体的布局效果更人性化。
首先我们应该去发现问题的根源,当TWaver支持大数据量时候,布局效果不佳,那么我们PC都在做什么呢,“它的时间都去哪了呢”?
不难发现,当我们创建N个节点的时候,TWaver会不断的刷新和绘制这些节点,其中最耗时间的莫过于DrawImage,因为每个节点Default情况下都有个默认的Image(当然vector情况下例外)。可见,我们PC的时间都花在DrawIamge上面了,从而影响了整体的性能。
那么如何解决这个问题呢?
其实也很简单,大数据量的布局,overView情况下,我们很难看清晰每个节点,那么既然看不清的节点我们为什么还花费大量的时间去认真的绘制它呢?想想是这样吧,只要当zoom值小于某个threshold,我们就用vector的图形(Rect或者Cicle)代替节点,既提高了性能,而且也提高了视觉享受。来看看这样布局的效果。
图1 所有的Group都合并 图2 所有的Group均展开 图3 不断放大(zoom<threshold)
图4 熟悉的面孔出现了(zoom>=threshold)
算法的改进还有很多,比如我们也可以在zoom值很小的时候放弃绘制attachment等等。
经过不断测试,这样的方法的确使得布局效果有一定的改善,当然更大的改善还需要布局位置的计算算法和显示的算法相结合,这样才能达到更佳的效果。
相关推荐
用代码实现AutoLayout的demo,有关AutoLayout的详细讲解,请见我的博客。blog.csdn.net/hello_hwc
一个简单的代码写autolayout
一款非常好用的AutoLaypout适配的分类,薄薄的封装既可以满足所有的autolayout适配,又可以更加清晰看到底层的原理实现,对掌握autolayout的思想非常有益
iOS autolayout 三种实现,第一种xib,第二种代码,第三种autolayout语法
最近在研究UITableViewCell高度的自适应,在网上找到了一个国内人员开发的工具类,自己下载下来研究了一下,感觉非常不错,用起来也非常方便,这是高手的博客地址...用这个之前要会使用AutoLayout
AutoLayout 等分 Demo
UIView AutoLayout ,UIView AutoLayout 是 UIView 的分类,实现了自动布局限制的简单接口。 T...
代码实现的AutoLayout,简单的使用了VFL。
iOS Autolayout PDF Ebook
Android AutoLayout全新的适配库,不产生任何多余的资源文件,完成各种分辨率的适配!
xcode6.3编译,图形为一个登录界面。关键代码:autolayout与坐标定位混合布局的代码方式实现;uiview动画编程;屏幕旋转时背景图片切换
ios 自动布局资料,包括文本,代码,和一些经验,供大家借鉴
Android的屏幕适配方案修改后的Autolayout示例,包含基本使用和旋分屏的适配。
Android AutoLayout全新的适配方式 堪称适配终结
对iOS里AutoLayout的深入理解和剖析
android适配不同分辨率资源文件生成工具,帮助快速完成UI图到不同设备分辨率的卡死适配,工具简单实用,上手快捷。
AutoLayoutPlus - 包括一组扩展,以编程方式处理AutoLayout
android通过不同values命名适配手机分辨率,使用autoLayout.jar配合生成资源文件
仿瀑布型的自定义视图