DragSortListView是一个可以实现拖动排序的listview控件,是我看到的交互较为复杂的开源代码中不管是代码质量还是流畅性都最好的。虽然作者已经不再更新其版本,但是仍然非常值得我们去研究,尤其是那些本身需要这种效果的朋友。
DragSortListView 简称DSLV,继承自listView,能实现拖动排序、滑动删除,主要用于这样的listview,音乐列表、收藏列表、清单列表等。他的主要特点如下:
1.干净利落的拖动效果,不会对界面的已有元素造成视觉上的干扰。
2.即使是在拖动的过程中,如果到了listview的上限边界,仍然能很流畅的滚动listview。
3.允许listview的每个子view高度不一致。
4.提供了startDrag()和stopDrag()公共方法,也就是你可以在任意地方控制拖动。
5.提供了能自定义floating View的接口。
DragSortListView 中有三个重要的概念:
1.数据排序。拖动排序能够重写排列list中的数据顺序,因为DragSortListView 并不知道你的数据具体是如何组织的,排序的是由你自己实现DragSortListView 提供的一些监听(Listener)接口来完成的。
2.拖动的开始于结束。startDrag()和stopDrag()分别实现开始与结束,但是一般拖动的效果都是借助于DragSortController来