原作者写的文章很详细,现在我只是一个卑微的代码搬运工
自定义View SlidingMenu(解决与RecyclerView滑动冲突,但是效果好像有点不太灵敏的样子)
public class SlidingMenu extends HorizontalScrollView {
//自定义View布局中内嵌的最外层的LinearLayout
private LinearLayout mWapper;
//菜单布局
private ViewGroup mMenu;
//内容布局
private ViewGroup mContent;
//屏幕宽度
private int mScreenWidth;
//菜单距屏幕右侧的距离,单位dp
private int mMenuRightPadding = 0;
//菜单的宽度
private int mMenuWidth;
//定义标志,保证onMeasure只执行一次
private boolean once = false;
//菜单是否是打开状态
private boolean isOpen = false;
//是否是抽屉式
private boolean isDrawerType = false;
private float startPos[]=new float[2];
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action=ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
//记录touch事件开始的坐标
startPos[0]=ev.getX();
startPos[1]=ev.getY();
break;
case MotionEvent.ACTION_MOVE:
//捕获移动事件
float x=ev.getX();
float y=ev.getY();
//计算和初始坐标的绝对值 如果左右移动距离 大于上下移动距离 拦截这次的touch事件 反之下发给子view处理
if(Math.abs(x-startPos[0])>Math.abs(y-startPos[1])){
return true;
}else{
return false;
}
}
return super.onInterceptTouchEvent(ev