LazyOrgView
通过自定义View简单实现组织结构图。在网上搜索并没有发现类似的View,由于项目需要,快速实现一个满足项目需求。另外一种实现方式:Google OrgChart或者其他OrgChart.js。
源码地址
添加依赖
Gradle
步骤 1. 工程根目录build.gradle 添加如下
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
- 1
- 2
- 3
- 4
- 5
Step 2. 项目build.gradle 添加依赖
dependencies {
implementation 'com.github.onlyloveyd:LazyOrgView:v1.0'
}
- 1
- 2
- 3
- 4
基本使用
步骤 1. 添加 LazyOrgView 至布局。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<cn.onlyloveyd.lazyorgview.widget.LazyOrgView
android:id="@+id/rv_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
步骤 2. 使用TreeNode构建跟节点以及其他节点,然后使用addChildNode组织节点关系。
TreeNode root = new TreeNode("总经理");
root.isRoot = true;
TreeNode A = new TreeNode("副经理");
TreeNode Aa = new TreeNode("行政部");
TreeNode Ab = new TreeNode("财务部");
TreeNode Ac = new TreeNode("采购部");
TreeNode B = new TreeNode("副经理");
TreeNode Ba = new TreeNode("工程部");
TreeNode Bb = new TreeNode("生产部");
TreeNode C = new TreeNode("副经理");
TreeNode Ca = new TreeNode("营销部");
TreeNode Cb = new TreeNode("方案造价部");
TreeNode Cc = new TreeNode("售后服务部");
root.addChildNode(A);
root.addChildNode(B);
root.addChildNode(C);
A.addChildNode(Aa);
A.addChildNode(Ab);
A.addChildNode(Ac);
B.addChildNode(Ba);
B.addChildNode(Bb);
C.addChildNode(Ca);
C.addChildNode(Cb);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
步骤 3. 给LazyOrgView配置 LazyOrgConfig 以及 rootNode。
lazyOrgView.setRootNode(root);
LazyOrgConfig lazyOrgConfig = new LazyOrgConfig();
lazyOrgConfig.setLineColor(Color.BLUE).setTextSize(12)
.setLineWidth(1)
.setTextBgColor(Color.GREEN)
.setTextBgRes(R.drawable.rect_shape);
lazyOrgView.setLazyOrgConfig(lazyOrgConfig);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
基本效果