Пример #1
0
 // 从资源文件获取数据
 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();
 }
Пример #2
0
  @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;
  }