神刀安全网

Android UI Libs之AndroidTreeView

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());     }

程序运行界面如下:

Android UI Libs之AndroidTreeView

4. 高级使用

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

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

public class MyHolder extends TreeNode.BaseNodeViewHolder<IconTreeItem> {     ...     @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());     }

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

Android UI Libs之AndroidTreeView

程序源代码下载: UILibs

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Android UI Libs之AndroidTreeView

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址