文章http://blog.csdn.net/michael1112/article/details/53907868 描述了recycleView的原理。
本文章将动画进行了封装。 用接口回调将onItemMove(int fromPosition, int toPosition) 的实现放到具体的adapter
1.实现 ItemDragHelperCallback
public class ItemDragHelperCallback extends ItemTouchHelper.Callback { private OnItemMoveListener mOnItemMoveListener; private boolean mIsLongPressEnabled; public void setLongPressEnabled(boolean longPressEnabled) { mIsLongPressEnabled = longPressEnabled; } public interface OnItemMoveListener { boolean onItemMove(int fromPosition, int toPosition); } public ItemDragHelperCallback(OnItemMoveListener onItemMoveListener) { mOnItemMoveListener = onItemMoveListener; } @Override public boolean isLongPressDragEnabled() { return mIsLongPressEnabled; } @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { int dragFlags = setDragFlags(recyclerView); int swipeFlags = 0; return makeMovementFlags(dragFlags, swipeFlags); } private int setDragFlags(RecyclerView recyclerView) { int dragFlags; RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); if (layoutManager instanceof GridLayoutManager || layoutManager instanceof StaggeredGridLayoutManager) { dragFlags = ItemTouchHelper.UP | ItemTouchHelper.