Google在其support库中为我们提供了Drawerlayout和SlidingPaneLayout两个布局来帮助开发者实现侧边栏滑动的效果。这两个新的布局大大方便了我们创建自己的滑动布局界面。然而,这两个强大的布局背后,却隐藏着一个功能强大的类——ViewDragHelper。通过ViewDragHelper,基本可以实现各种不同的滑动,拖放需求。
下面通过一个例子,来演示一下如何使用ViewDragHelper创建一个滑动布局。在这个例子中,初始时显示内容界面,当用户手指超过一段距离时,内容界面侧滑显示菜单界面,整个过程如下图所示:
下面看具体的代码是如何实现的:
- 初始化ViewDragHelper
mViewDragHelper = ViewDragHelper.create(this, callback);
它的第一个参数是要监听的View,通常需要是一个ViewGroup,即parentView;第二个参数是一个Callback回调,这个回调就是整个ViewDragHelper的逻辑核心。
- 拦截事件
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return mViewDragHelper.shouldInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//将触摸事件传递给ViewDragHelper,此操作必不可少
mViewDragHelper.processTouchEvent(event);
return true;
}
- 处理computeScroll()