Android UI Libs之AndroidTreeView

1. 说明

AndroidTreeView,顾名思义,Android上面的树形视图。

该库的特点:

可扩展与销毁的N叉树

为节点自定义值,视图,样式

旋转屏幕后保存状态

节点的选中模式

动态添加,删除节点

注意:接近Android4.0的版本树的层次太深可能很容易导致程序崩溃。

2. 配置

在模块的build.gradle中添加依赖:compile 'com.github.bmelnychuk:atv:1.2.+'

3. 基本使用

/**

* AndroidTreeView的基本使用

*/

public void baseUsage(){

//创建根节点

TreeNode root = TreeNode.root();

//创建一般节点

TreeNode parent = new TreeNode("父节点");

TreeNode child0 = new TreeNode("子节点1");

TreeNode child1 = new TreeNode("子节点2");

//添加子节点

parent.addChildren(child0, child1);

root.addChild(parent);

//创建树形视图

AndroidTreeView tView = new AndroidTreeView(this, root);

//将树形视图添加到layout中

layout.addView(tView.getView());

}

程序运行界面如下:

36f501c91df0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

4. 高级使用

我们可以看到上一节基本使用中的界面很丑,节点中只有文本信息,我们可以为节点自定义视图来提高用户体验。

为节点创建已定义视图,继承TreeNode.BaseNodeViewHolder并重写createNodeView方法:

public class MyHolder extends TreeNode.BaseNodeViewHolder {

...

@Override

public View createNodeView(TreeNode node, IconTreeItem value) {

final LayoutInflater inflater = LayoutInflater.from(context);

final View view = inflater.inflate(R.layout.layout_profile_node, null, false);

TextView tvValue = (TextView) view.findViewById(R.id.node_value);

tvValue.setText(value.text);

return view;

}

...

public static class IconTreeItem {

public int icon;

public String text;

}

}

将节点与ViewHolder联系起来:

IconTreeItem nodeItem = new IconTreeItem();

TreeNode child1 = new TreeNode(nodeItem).setViewHolder(new MyHolder(mContext));

本库中示例中有8个自定义的ViewHolder,我利用其中之一IconTreeItemHolder来实现自定义节点视图:

/**

* AndroidTreeView的高级使用:为节点自定义视图

*/

public void customViewForNode(){

//创建根节点

TreeNode root = TreeNode.root();

//创建节点item

IconTreeItemHolder.IconTreeItem nodeItem = new IconTreeItemHolder.IconTreeItem(R.string.ic_laptop,"我的设备");

IconTreeItemHolder.IconTreeItem nodeItem2 = new IconTreeItemHolder.IconTreeItem(R.string.ic_folder,"文件夹");

IconTreeItemHolder.IconTreeItem nodeItem3 = new IconTreeItemHolder.IconTreeItem(R.string.ic_drive_file,"文件");

//创建一般节点

TreeNode device = new TreeNode(nodeItem);

TreeNode fold = new TreeNode(nodeItem2);

TreeNode file = new TreeNode(nodeItem3);

//添加子节点

fold.addChild(file);

device.addChild(fold);

root.addChild(device);

//创建树形视图

AndroidTreeView tView = new AndroidTreeView(this, root);

//设置树形视图开启默认动画

tView.setDefaultAnimation(true);

//设置树形视图默认的样式

tView.setDefaultContainerStyle(R.style.TreeNodeStyleCustom);

//设置树形视图默认的ViewHolder

tView.setDefaultViewHolder(IconTreeItemHolder.class);

//将树形视图添加到layout中

layout.addView(tView.getView());

}

程序运行后的界面是这样的:

36f501c91df0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

程序源代码下载:UILibs

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐