DragSortListview
前几天公司要做一个拖动排序的效果,找到了这款开源控件。十分强大~
Github链接:https://github.com/bauerca/drag-sort-listview
简要
DragSortListview是一个支持拖拽排序和左右滑动删除功能的自定义ListView,重写了TouchInterceptor(TI)类来提供更加优美的拖拽动画效果,被评为当前拖动排序的最完美的解决方案:
1. 完美的拖拽效果
2. 在拖动时提供更平滑的列表滚动效果
3. 提供start/stopDrag()方法
4. 公开接口,可以自定义拖动的View
如何使用
有三个主要的元素来定义拖拽的操作
1. 数据重排:拖拽排序重排ListView底层的数据顺序,由于DSLV不知道您是如何组织您的数据的,所以重新组织数据必须由您自己通过实现相关的接口来实现。
2. 开始/停止拖动:通过调用DSLV的 startDrag() 和 stopDrag() 函数来启动或者停止拖动操作。 DragSortController这个助手类,提供了所有常用的 开始/停止/删除 拖拽操作功能。
3. Floating View(拖动的View):通过实现 FloatViewManager 接口可以控制 拖动的View 的视觉效果和行为。这样您可以显示任何内容作为 拖动的View,并且可以在拖动过程中更新其位置和显示状态。 DragSortController 助手类已经实现了该接口并提供了一些易用的实现方式。
[注意]
第一条是必须自己实现的,第二条和第三条可以使用DSC助手类实现
XML属性
名称 | 意义 |
---|---|
collapsed_height | (dimension, 1px) 拖动其实位置占位符的高度。不能为0 |
drag_scroll_start | (float, 0.3) 拖动时开始滚动ListView的区域(为DSLV 高度的分数值,在0到1之前 |