最近看了下這個項目,關於滑動菜單部分的實現:
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函數實現