在《ViewDragHelper的简单分析(一)》这篇博客颇为详细的说明了 ViewDragHelper的工作原理及在拖动过程中重写CallBack的几个相关方法对拖动过程加以控制,其核心拖动原理就是对offsetLeftAndRight/offsetTopAndBottom的应用。ViewDragHelper的控件其实很好用,网上查查资料或者自己静下来研读一下它的源码很快就可以上手,当我基本看完了它的源码并完成了第一篇博客后就琢磨着怎么利用它写个自定义的简单控件。记得我琢磨过qq聊天列表的侧滑功能是怎么实现的,并试着完成一下,在没有了解ViewDragHelper的时候基本上没什么思路,不过看了ViewDragHelper的实现原理之后或许是灵机一动,就尝试着用它来实现侧滑功能,一点一点完善算是完成了吧。本篇博客就来详细说明一下它的实现过程,估计博文有点长,如果觉得麻烦或者啰嗦的话可以直接下载博文最后的demo链接自己研究和修改。闲言少叙,书归正传!
先说说核心思路吧,通篇围绕着就是核心思路在做扩展来完善侧滑功能:因为是水平移动的,所以核心原理就是在合适的时机调用offsetLeftAndRight。基本思路两个水平左右排列的View(左边的为leftView,右边的为rightView),当拖动leftView移动dx距离的时候,让rightView.offsetLeftAndRight(dx);同理当拖拽rightView移动dx的距离的时候,让leftView.offsetLeftAdnRight(dx);很简单吧?说了基本原理和思路下面就一步一步来实现怎么处理的吧。
1)重写onLayout,实现leftView和ri