Android 任意层级 树形控件(无jar版)

上传者: lmj623565791 | 上传时间: 2019-12-21 20:12:11 | 文件大小: 2.38MB | 文件类型: rar
在Android开发中,有时我们需要展示层次结构的数据,这时树形控件就显得尤为重要。本教程主要探讨的是如何在不依赖外部jar包的情况下实现一个自定义的任意层级的树形控件。通过分析提供的链接——博客文章《Android 任意层级 树形控件(无jar版)》以及Demo_zhy_05_tree_view_beta这个示例代码,我们可以深入理解这种自定义控件的设计和实现原理。 我们来看树形控件的基本概念。在Android中,树形控件通常用于展示具有父子关系的数据结构,用户可以通过点击父节点来展开或折叠其子节点。这种控件在文件系统、组织结构或者导航菜单等场景下十分常见。 为了实现这样一个控件,开发者需要考虑以下几个关键点: 1. 数据模型:我们需要一个数据模型来存储树形结构的数据。每个节点包含自身的值和子节点的集合。在代码中,我们可以创建一个`TreeNode`类,它包含一个表示当前节点值的字段,以及一个用于存储子节点的列表。 2. 自定义View:接下来,我们需要自定义一个`View`来展示每个节点。这个`View`可能包含一个复选框(如果需要的话)、一个可点击的文本以及一个指示器来表示当前节点是否展开。我们可以重写`onDraw()`方法,根据节点的状态绘制相应的视图。 3. 层级遍历:为了展示所有的节点,我们需要一种方式来遍历整个树结构。这通常通过递归函数实现,从根节点开始,然后对每个节点的子节点进行处理。在遍历过程中,我们可以决定哪些节点是可见的,哪些应该被折叠。 4. 事件处理:点击事件的处理是树形控件的核心部分。当用户点击一个节点时,我们需要更新该节点的状态(展开或折叠),并重新绘制受影响的部分。同时,可能还需要触发一些回调,例如通知用户选择了哪个节点。 5. 动画效果:为了提供更好的用户体验,可以添加展开和折叠动画。这可以通过设置`View`的动画属性来实现,例如改变高度、透明度等。 在`Demo_zhy_05_tree_view_beta`这个示例代码中,开发者很可能已经实现了以上这些功能。通过阅读源代码,我们可以学习到如何将这些概念转化为实际的代码实现。此外,博客文章中可能会提供更详细的解释和步骤,包括如何初始化控件、如何设置数据、如何处理点击事件等。 实现一个任意层级的树形控件是一项挑战,但通过自定义`View`和巧妙地遍历、处理数据,我们可以创建出满足需求的控件。这个过程不仅锻炼了我们的编程技巧,也加深了对Android视图系统和数据结构的理解。通过学习和实践这个案例,开发者可以更好地应对类似的需求,并提升自己的Android应用开发能力。

文件下载

资源详情

[{"title":"( 75 个子文件 2.38MB ) Android 任意层级 树形控件(无jar版)","children":[{"title":"Demo_zhy_05_tree_view_beta","children":[{"title":".project <span style='color:#111;'> 862B </span>","children":null,"spread":false},{"title":"project.properties <span style='color:#111;'> 563B </span>","children":null,"spread":false},{"title":"src","children":[{"title":"com","children":[{"title":"zhy","children":[{"title":"tree_view","children":[{"title":"SimpleTreeAdapter.java <span style='color:#111;'> 1.57KB </span>","children":null,"spread":false},{"title":"MainActivity.java <span style='color:#111;'> 2.70KB </span>","children":null,"spread":false}],"spread":true},{"title":"tree","children":[{"title":"bean","children":[{"title":"TreeListViewAdapter.java <span style='color:#111;'> 3.24KB </span>","children":null,"spread":false},{"title":"TreeHelper.java <span style='color:#111;'> 4.10KB </span>","children":null,"spread":false},{"title":"TreeNodeLabel.java <span style='color:#111;'> 303B </span>","children":null,"spread":false},{"title":"Node.java <span style='color:#111;'> 2.37KB </span>","children":null,"spread":false},{"title":"TreeNodePid.java <span style='color:#111;'> 301B </span>","children":null,"spread":false},{"title":"TreeNodeId.java <span style='color:#111;'> 298B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"bean","children":[{"title":"FileBean.java <span style='color:#111;'> 479B </span>","children":null,"spread":false},{"title":"Bean.java <span style='color:#111;'> 749B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"AndroidManifest.xml <span style='color:#111;'> 876B </span>","children":null,"spread":false},{"title":"res","children":[{"title":"drawable-ldpi","children":null,"spread":false},{"title":"drawable-hdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 7.48KB </span>","children":null,"spread":false}],"spread":true},{"title":"values-v11","children":[{"title":"styles.xml <span style='color:#111;'> 334B </span>","children":null,"spread":false}],"spread":true},{"title":"menu","children":[{"title":"main.xml <span style='color:#111;'> 263B </span>","children":null,"spread":false}],"spread":true},{"title":"drawable-mdpi","children":[{"title":"tree_ex.png <span style='color:#111;'> 2.78KB </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 3.69KB </span>","children":null,"spread":false},{"title":"tree_ec.png <span style='color:#111;'> 2.79KB </span>","children":null,"spread":false}],"spread":true},{"title":"layout","children":[{"title":"list_item.xml <span style='color:#111;'> 910B </span>","children":null,"spread":false},{"title":"activity_main.xml <span style='color:#111;'> 461B </span>","children":null,"spread":false}],"spread":true},{"title":"values-sw600dp","children":[{"title":"dimens.xml <span style='color:#111;'> 203B </span>","children":null,"spread":false}],"spread":true},{"title":"drawable-xxhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 24.20KB </span>","children":null,"spread":false}],"spread":true},{"title":"drawable-xhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 12.22KB </span>","children":null,"spread":false}],"spread":false},{"title":"values","children":[{"title":"strings.xml <span style='color:#111;'> 231B </span>","children":null,"spread":false},{"title":"styles.xml <span style='color:#111;'> 697B </span>","children":null,"spread":false},{"title":"dimens.xml <span style='color:#111;'> 220B </span>","children":null,"spread":false}],"spread":false},{"title":"values-sw720dp-land","children":[{"title":"dimens.xml <span style='color:#111;'> 277B </span>","children":null,"spread":false}],"spread":false},{"title":"values-v14","children":[{"title":"styles.xml <span style='color:#111;'> 391B </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"assets","children":null,"spread":false},{"title":"gen","children":[{"title":"com","children":[{"title":"zhy","children":[{"title":"tree_view","children":[{"title":"BuildConfig.java <span style='color:#111;'> 159B </span>","children":null,"spread":false},{"title":"R.java <span style='color:#111;'> 2.76KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"libs","children":[{"title":"android-support-v4.jar <span style='color:#111;'> 606.89KB </span>","children":null,"spread":false}],"spread":true},{"title":".classpath <span style='color:#111;'> 475B </span>","children":null,"spread":false},{"title":"proguard-project.txt <span style='color:#111;'> 781B </span>","children":null,"spread":false},{"title":"ic_launcher-web.png <span style='color:#111;'> 50.19KB </span>","children":null,"spread":false},{"title":"bin","children":[{"title":"resources.ap_ <span style='color:#111;'> 41.19KB </span>","children":null,"spread":false},{"title":"classes","children":[{"title":"com","children":[{"title":"zhy","children":[{"title":"tree_view","children":[{"title":"R$layout.class <span style='color:#111;'> 433B </span>","children":null,"spread":false},{"title":"R$style.class <span style='color:#111;'> 428B </span>","children":null,"spread":false},{"title":"R$dimen.class <span style='color:#111;'> 458B </span>","children":null,"spread":false},{"title":"BuildConfig.class <span style='color:#111;'> 343B </span>","children":null,"spread":false},{"title":"R$drawable.class <span style='color:#111;'> 466B </span>","children":null,"spread":false},{"title":"R$attr.class <span style='color:#111;'> 337B </span>","children":null,"spread":false},{"title":"R$id.class <span style='color:#111;'> 502B </span>","children":null,"spread":false},{"title":"R.class <span style='color:#111;'> 663B </span>","children":null,"spread":false},{"title":"R$string.class <span style='color:#111;'> 469B </span>","children":null,"spread":false},{"title":"MainActivity$1.class <span style='color:#111;'> 1.30KB </span>","children":null,"spread":false},{"title":"SimpleTreeAdapter$ViewHolder.class <span style='color:#111;'> 775B </span>","children":null,"spread":false},{"title":"R$menu.class <span style='color:#111;'> 385B </span>","children":null,"spread":false},{"title":"MainActivity.class <span style='color:#111;'> 3.10KB </span>","children":null,"spread":false},{"title":"SimpleTreeAdapter.class <span style='color:#111;'> 2.52KB </span>","children":null,"spread":false}],"spread":false},{"title":"tree","children":[{"title":"bean","children":[{"title":"TreeNodeLabel.class <span style='color:#111;'> 396B </span>","children":null,"spread":false},{"title":"TreeListViewAdapter$OnTreeNodeClickListener.class <span style='color:#111;'> 310B </span>","children":null,"spread":false},{"title":"TreeListViewAdapter$1.class <span style='color:#111;'> 1.72KB </span>","children":null,"spread":false},{"title":"TreeListViewAdapter.class <span style='color:#111;'> 3.72KB </span>","children":null,"spread":false},{"title":"TreeNodePid.class <span style='color:#111;'> 392B </span>","children":null,"spread":false},{"title":"TreeNodeId.class <span style='color:#111;'> 390B </span>","children":null,"spread":false},{"title":"Node.class <span style='color:#111;'> 2.99KB </span>","children":null,"spread":false},{"title":"TreeHelper.class <span style='color:#111;'> 4.74KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"bean","children":[{"title":"Bean.class <span style='color:#111;'> 1.18KB </span>","children":null,"spread":false},{"title":"FileBean.class <span style='color:#111;'> 668B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true},{"title":"AndroidManifest.xml <span style='color:#111;'> 876B </span>","children":null,"spread":false},{"title":"Demo_zhy_05_tree_view.apk <span style='color:#111;'> 276.69KB </span>","children":null,"spread":false},{"title":"dexedLibs","children":[{"title":"android-support-v4-39f6165c561b1ddf53f605d244b5585f.jar <span style='color:#111;'> 227.16KB </span>","children":null,"spread":false},{"title":"android-support-v4-61af535f2a2c49472c963da348c0fb54.jar <span style='color:#111;'> 227.16KB </span>","children":null,"spread":false},{"title":"android-support-v4-5ece927d8a2ce3fa87e74c34f681d31c.jar <span style='color:#111;'> 227.16KB </span>","children":null,"spread":false}],"spread":false},{"title":"jarlist.cache <span style='color:#111;'> 120B </span>","children":null,"spread":false},{"title":"Demo_zhy_05_tree_view_beta.apk <span style='color:#111;'> 277.08KB </span>","children":null,"spread":false},{"title":"res","children":[{"title":"drawable-hdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 5.82KB </span>","children":null,"spread":false}],"spread":false},{"title":"drawable-mdpi","children":[{"title":"tree_ex.png <span style='color:#111;'> 112B </span>","children":null,"spread":false},{"title":"ic_launcher.png <span style='color:#111;'> 3.04KB </span>","children":null,"spread":false},{"title":"tree_ec.png <span style='color:#111;'> 117B </span>","children":null,"spread":false}],"spread":false},{"title":"drawable-xxhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 17.47KB </span>","children":null,"spread":false}],"spread":false},{"title":"drawable-xhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 9.14KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"classes.dex <span style='color:#111;'> 685.87KB </span>","children":null,"spread":false},{"title":"Demo_zhy_06_tree_view.apk <span style='color:#111;'> 278.10KB </span>","children":null,"spread":false}],"spread":true}],"spread":false}],"spread":true}]

评论信息

  • 张华东的故事 :
    这个树形结构还挺好用的
    2021-08-06
  • qq_39268069 :
    很实用!还不错哦~
    2020-12-03
  • zh_bing :
    东西挺好,就是不能完全满足我的需求。
    2020-04-17
  • aqiusen :
    已经看过,很好,谢谢分享!
    2020-01-13
  • zhang00002222 :
    很不错的东西 已经用上了 学习了
    2019-12-05

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明