Android 实现无序树形结构图,类似思维导图和级联分层图 (无序,随机位置)
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!专注于 Android/Unity 和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
👉即将学会
不使用什么框架,就用基础的代码,实现层级导图。
👉背景
今天七夕快乐呀,小芝🙎和小空🙈今天一起吃了汉堡,很好吃哦!
👉实践过程
最近公司的医疗项目需要用到这个,需求是病例之间的状态跳转,医学方面比如急救的时候有一些比较成熟的操作流程和步骤,紧急情况下是可以略过的,所以软件就要模拟出来状态的跳转。而项目展示的状态就像亲属关系图类似。
先看下我们的效果吧
刚开始的时候,小空脑子也是空空的,毫无头绪,在咨询了同事其他端实现的思路后,转为 Android 的实现技术。
大致思路如下:
如何添加这些控件
如何位置随机
画线和画不封闭的箭头
扩展性
有了这些想法,我们就要实际动手操作了:这些仍逃不出自定义的范围:
下面是我们的布局文件,1 个 Button 和 2 个 TextView:
有了这些基础控件之后,就开始考虑不断创建添加进去的问题了,其实不管是位置随机还是固定位置都可以实现,具体看项目的需求了,小空做的项目应为要和其他端保持一致,所以给定了具体的画布大小和位置。
从上段代码可以看出,不管是添加状态还是连线都是靠的基本的 addView,然后利用数组初始多个最开始咱们自定义的那个 View,坐标的位置就是 topMargin 和 leftMargin 的值(相对于屏幕左上角,即给的坐标)。思路确实是挺另类的。
接着就是划线了,当走到这的时候,我们就已经知道了各个自定义 View 的坐标位置,毕竟靠的是上面的 addView,那么画线的起点和终点我们稍加计算也就很明确了。
画线使用自定义 View 的 canvas,drawPath 这些就好了,为了让线条看起来更加的丝滑性感,小空加上了贝塞尔曲线,还有线头(其实只要在起点重点坐标点延长出两个线段就搞定了)
大致的效果出来了;恩 需求解决!若您有相近的需求或解决思路,欢迎在下方留下地址!
另外,既然是自定义的 View,那加动画肯定没问题;除了这些,还能更完善:比如箭头的平滑,大控件的各种事件等等,暂时待续.....
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://www.infoq.cn/profile/DB2492B85795C4/publish
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
版权声明: 本文为 InfoQ 作者【芝麻粒儿】的原创文章。
原文链接:【http://xie.infoq.cn/article/e1e357ab081c0b67f379c120a】。文章转载请联系作者。
评论