// 从资源文件获取数据 private void initObtainStyledAttr(Context context, AttributeSet attrs) { TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.SwipeMenu); mType = array.getInteger(R.styleable.SwipeMenu_sm_type, 1111); mDragWipeOffset = (int) array.getDimension(R.styleable.SwipeMenu_sm_dragoffset, SizeUtil.Dp2Px(context, 100)); mMenuOffset = (int) array.getDimension(R.styleable.SwipeMenu_sm_menuoffset, SizeUtil.Dp2Px(context, 50)); mStartScale = array.getFloat(R.styleable.SwipeMenu_sm_startscale, 0.2f); mStartAlpha = array.getFloat(R.styleable.SwipeMenu_sm_startalpha, 0.2f); mStart3DAngle = array.getInteger(R.styleable.SwipeMenu_sm_start3dangle, 60); array.recycle(); }
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { float x = ev.getX(); float y = ev.getY(); boolean intercept = false; int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: intercept = false; break; case MotionEvent.ACTION_MOVE: float xDelta = x - xIntercept; float yDelta = y - yIntercept; if (mDragWipeOffset == 0 && Math.abs(xDelta) > 20) { // 全屏滑动 intercept = true; break; } if (!isMenuShowing()) { if (x >= SizeUtil.Dp2Px(getContext(), mDragWipeOffset)) { return false; } } if (x + getScrollX() < mScreenWidth + mDragWipeOffset) { if (Math.abs(xDelta) > Math.abs(yDelta) && Math.abs(xDelta) > 20) { // X滑动主导 intercept = true; } else { intercept = false; } } break; case MotionEvent.ACTION_UP: intercept = false; break; } xLast = x; yLast = y; xIntercept = x; yIntercept = y; return intercept; }