Android7.0新增工具DiffUtil详解

自从Google提供了RecyclerView之后,这个控件在Android列表和表格的开发中越来越多的替代了ListView和GridView,而且RecyclerView额外的提供了一些旧控件所没有的行为,比如局部刷新、列表表格更新动画、元素拖拽等等,极大程度的简化和方便了集合数据的展示UI的开发。
而在使用RecyclerView进行一些局部刷新时,往往会手动记录集合元素的增、删、变更、移动等事件,并分别调用不同的方法来通知adapter来对控件进行更新。而本篇介绍的工具类则对这些操作进行了完美的封装,让我们不再需要手动计算并记录元素的变更,而是交由DiffUtil来计算新旧数据集合的差异并通知adapter调用不同的更新方法来更新UI。

排序 局部刷新

实现基于RecyclerView的树形组件封装

最近因项目需求需要一个可以进行展开收缩的多级树形控件,首先考虑的是ExpandableListView,但是这个控件只支持一级展开不符合需求, 之后在百度谷歌了一下发现有用List实现的多级树形控件,预览效果是不错的,但是经测试大量数据展开时会造成严重的卡顿现象,也不符合需求。 最终决定以RecyclerView封装一个可服用的多级树形组件,以满足大量数据的展开折叠,以及展开折叠的动画效果。
最终效果图:

员工效果图

给滚动列表项增加渐显载入动画

之前还在使用ListView作为展示列表数据的控件时尝试过给列表项增加载入动画,但是ListView是一个效果比较单一的控件, 在想要实现表格布局或者是瀑布流的载入动画的时候还要分别给GridView和瀑布流控件分别实现,这是比较麻烦的。
在之前的博客中提到过RecyclerView这个控件,这是在V7包中提供的一个功能非常强大而且扩展性非常强的一个控件, 用它可以实现列表、表格、瀑布流等效果,只需要指定不同的LayoutManager即可,具体的用法在之前的博客中已经记录过, 在这里就不再赘述。
今天记录的是给RecyclerView增加item的载入动画,这样在借助RecyclerView的特性下在不同效果的布局模式中就可以显示相同的效果, 而不用分别进行实现,下面是效果:

列表动画 grid动画 瀑布流动画

RecyclerView的使用

该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView。
那么有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活, 通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现高度自由的效果。

RecyclerView is a more advanced and flexible version of ListView. This widget is a container for large sets of views that can be recycled and scrolled very efficiently. Use the RecyclerView widget when you have lists with elements that change dynamically.

,