最近看了下这个项目,关于滑动菜单部分的实现:
SlidingMenu类 继承 RelativeLayout 是此项目的关键之所在,
SlidingMenu 中包含两个子View:
private CustomViewAbove mViewAbove;
private CustomViewBehind mViewBehind;
CustomViewAbove 与CustomViewBehind 都是继承自 ViewGroup,CustomViewAbove 用于显示内容,CustomViewBehind 用于显示菜单。
菜单的滑动切换就是 CustomViewAbove 和CustomViewBehind 的移动显示。
CustomViewAbove 中需要关注的两个函数:
public boolean onInterceptTouchEvent(MotionEvent ev)
public boolean onTouchEvent(MotionEvent ev)
onInterceptTouchEvent 控制触摸事件是否需要传递给子view进行处理,[如左右切换打开关闭菜单 则不需要传递给子View,在CustomViewAbove 中的onTouchEvent 进行处理]
onTouchEvent 则主要负责对滑动菜单的滑动事件进行处理
View的滑动主要分为 drag 和fling [手指在屏幕上的滑动和不在屏幕上的滑动] ,主要是调用 scroolTo函数实现