Android实现思维导图功能,Android实现思维导图

最近,小弟在实现一个思维导图的开源控件。下面我简单介绍一下如下打造一个类似思维导图软件的ViewGroup。

基本结构.png

建立模型

主要模型结构相对简单:TreeModel,NoteModel,NoteView,TreeView。

核心实现分布如下:

TreeModel:树形结构的存储,树形结构的遍历,添加、删除节点;

NoteModel:节点关联的指向,和Parent的指向;

TreeView :绘制树形结构,对树形结构位置的纠正,实现View层的添加,删除,note关联绘制;

NoteView:显示text;

编写位置计算核心代码

在核心代码中,我想和大家分享的是TreeView如何对多种Style(树形形状)进行适配的问题。因为我们的树形结构的表达多种的,有的是一个半树形图,有点是圆形展开的等。对于这个问题,作为程序员如何进行解耦能,采用Interface进行解构适配,统一行为。所以在这里我写了一个TreeLayoutManager进行管理树形的位置表达。这里我实现了一个RightTreeLayoutManager。代码概况如下:

接口

public interface TreeLayoutManager {

/**

* 进行树形结构的位置计算

*/

void onTreeLayout(TreeView treeView);

/**

* 位置分布好后的回调,用于确认ViewGroup的大小

*/

ViewBox onTreeLayoutCallBack();

/**

* 修正位置

*

* @param treeView

* @param next

*/

void correctLayout(TreeView treeView, NodeView next);

}

实现

public class RightTreeLayoutManager implements TreeLayoutManager{

你可能感兴趣的:(Android实现思维导图功能)