android.support.v4.widget.ViewDragHelper#EDGE_TOP源码实例Demo

下面列出了android.support.v4.widget.ViewDragHelper#EDGE_TOP 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: FragmentRigger   文件: SwipeLayout.java
@Override
public void onViewReleased(@NonNull View releasedChild, float xvel, float yvel) {
    final int childWidth = releasedChild.getWidth();
    final int childHeight = releasedChild.getHeight();

    int left = 0, top = 0;
    if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_LEFT) != 0) {
        left = xvel > 0 || xvel == 0 && mScrollPercent > SCROLL_FINISH_THRESHOLD ? (childWidth) : 0;
    } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_RIGHT) != 0) {
        left = xvel < 0 || xvel == 0 && mScrollPercent > SCROLL_FINISH_THRESHOLD ? -(childWidth) : 0;
    } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_TOP) != 0) {
        top = yvel < 0 || yvel == 0 && mScrollPercent > SCROLL_FINISH_THRESHOLD ? (childHeight) : 0;
    } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_BOTTOM) != 0) {
        top = yvel < 0 || yvel == 0 && mScrollPercent > SCROLL_FINISH_THRESHOLD ? -(childHeight) : 0;
    }

    mDragHelper.settleCapturedViewAt(left, top);
    invalidate();
}
 
源代码2 项目: SwipeRevealLayout   文件: SwipeRevealLayout.java
@Override
public void onEdgeDragStarted(int edgeFlags, int pointerId) {
    super.onEdgeDragStarted(edgeFlags, pointerId);

    if (mLockDrag) {
        return;
    }

    boolean edgeStartLeft = (mDragEdge == DRAG_EDGE_RIGHT)
            && edgeFlags == ViewDragHelper.EDGE_LEFT;

    boolean edgeStartRight = (mDragEdge == DRAG_EDGE_LEFT)
            && edgeFlags == ViewDragHelper.EDGE_RIGHT;

    boolean edgeStartTop = (mDragEdge == DRAG_EDGE_BOTTOM)
            && edgeFlags == ViewDragHelper.EDGE_TOP;

    boolean edgeStartBottom = (mDragEdge == DRAG_EDGE_TOP)
            && edgeFlags == ViewDragHelper.EDGE_BOTTOM;

    if (edgeStartLeft || edgeStartRight || edgeStartTop || edgeStartBottom) {
        mDragHelper.captureChildView(mMainView, pointerId);
    }
}
 
源代码3 项目: FragmentRigger   文件: SwipeLayout.java
@Override
public boolean tryCaptureView(@NonNull View child, int pointerId) {
    if (!mIsEnable || mEdgeFlag == EDGE_FLAG_NONE) {
        return false;
    }
    boolean dragEnable = mDragHelper.isEdgeTouched(mEdgeFlag, pointerId);
    if (dragEnable) {
        if (mDragHelper.isEdgeTouched(ViewDragHelper.EDGE_LEFT, pointerId)) {
            mCurrentSwipeOrientation = ViewDragHelper.EDGE_LEFT;
        } else if (mDragHelper.isEdgeTouched(ViewDragHelper.EDGE_RIGHT, pointerId)) {
            mCurrentSwipeOrientation = ViewDragHelper.EDGE_RIGHT;
        } else if (mDragHelper.isEdgeTouched(ViewDragHelper.EDGE_TOP, pointerId)) {
            mCurrentSwipeOrientation = ViewDragHelper.EDGE_TOP;
        } else if (mDragHelper.isEdgeTouched(ViewDragHelper.EDGE_BOTTOM, pointerId)) {
            mCurrentSwipeOrientation = ViewDragHelper.EDGE_BOTTOM;
        } else {
            mCurrentSwipeOrientation = -1;
        }
    }
    if (mOnSwipeChangedListener != null) {
        SwipeEdge swipeEdge = null;
        if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_LEFT) != 0) {
            swipeEdge = SwipeEdge.LEFT;
        } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_RIGHT) != 0) {
            swipeEdge = SwipeEdge.RIGHT;
        } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_TOP) != 0) {
            swipeEdge = SwipeEdge.TOP;
        } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_BOTTOM) != 0) {
            swipeEdge = SwipeEdge.BOTTOM;
        }
        if (swipeEdge != null) {
            mOnSwipeChangedListener.onEdgeTouched(SwipeLayout.this, swipeEdge, mPuppetHost);
        }
    }
    return dragEnable;
}
 
源代码4 项目: FragmentRigger   文件: SwipeLayout.java
@Override
public int clampViewPositionVertical(@NonNull View child, int top, int dy) {
    int ret = 0;
    if (canSwipe(SwipeEdge.TOP) && (mCurrentSwipeOrientation & ViewDragHelper.EDGE_TOP) != 0) {
        ret = Math.min(child.getHeight(), Math.max(top, 0));
    } else if (canSwipe(SwipeEdge.BOTTOM) && (mCurrentSwipeOrientation & ViewDragHelper.EDGE_BOTTOM) != 0) {
        ret = Math.min(0, Math.max(top, -child.getHeight()));
    }
    return ret;
}
 
源代码5 项目: FragmentRigger   文件: SwipeLayout.java
private void drawShadow(@NonNull Canvas canvas, @NonNull View child) {
    if (mShadowDrawables == null || mShadowDrawables.length == 0) {
        return;
    }
    final Rect childRect = mTmpRect;
    child.getHitRect(childRect);

    if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_LEFT) != 0) {
        drawShadowChild(canvas, mShadowDrawables[0], childRect.left - mShadowWidth,
                childRect.top, childRect.left, childRect.bottom);
    } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_RIGHT) != 0) {
        if (mShadowDrawables.length > 1) {
            drawShadowChild(canvas, mShadowDrawables[1], childRect.right,
                    childRect.top, childRect.right + mShadowWidth, childRect.bottom);
        }
    } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_TOP) != 0) {
        if (mShadowDrawables.length > 2) {
            drawShadowChild(canvas, mShadowDrawables[2], childRect.left,
                    childRect.top - mShadowWidth, childRect.right, childRect.top);
        }
    } else if ((mCurrentSwipeOrientation & ViewDragHelper.EDGE_BOTTOM) != 0) {
        if (mShadowDrawables.length > 3) {
            drawShadowChild(canvas, mShadowDrawables[3], childRect.left,
                    childRect.bottom, childRect.right, childRect.bottom + mShadowWidth);
        }
    }
}
 
源代码6 项目: FragmentRigger   文件: SwipeLayout.java
private void computeScroll(@Nullable View view) {
    if (view == null) {
        return;
    }
    view.setX(0);
    view.setY(0);
    View capturedView = mDragHelper.getCapturedView();
    if (capturedView == null) {
        return;
    }
    int xOffset = 0;
    int yOffset = 0;
    switch (mCurrentSwipeOrientation) {
        case ViewDragHelper.EDGE_LEFT:
            xOffset = (capturedView.getLeft() - getWidth());
            break;
        case ViewDragHelper.EDGE_RIGHT:
            xOffset = (capturedView.getLeft() + getWidth());
            break;
        case ViewDragHelper.EDGE_TOP:
            yOffset = (capturedView.getTop() - getHeight());
            break;
        case ViewDragHelper.EDGE_BOTTOM:
            yOffset = (capturedView.getTop() + getHeight());
            break;
    }
    if (mParallaxOffset >= 0) {
        xOffset *= mScrimOpacity * mParallaxOffset;
        yOffset *= mScrimOpacity * mParallaxOffset;
    }
    view.setX(xOffset);
    view.setY(yOffset);
}
 
源代码7 项目: FragmentRigger   文件: SwipeLayout.java
public void setSwipeEdgeSide(SwipeEdge[] swipeEdgeSide) {
    if (swipeEdgeSide == null || swipeEdgeSide.length == 0) {
        mSwipeEdgeSide = new ArrayList<>();
        setEnableSwipe(false);
        return;
    }
    mSwipeEdgeSide = Arrays.asList(swipeEdgeSide);
    for (SwipeEdge edge : mSwipeEdgeSide) {
        if (edge == SwipeEdge.NONE) {
            if (swipeEdgeSide.length > 1) {
                throw new IllegalArgumentException("The Swiper#edgeSide can not contain other value as" +
                        " the SwipeEdge.NONE is contained.");
            }
            setEnableSwipe(false);
            return;
        } else if (edge == SwipeEdge.ALL) {
            if (swipeEdgeSide.length > 1) {
                throw new IllegalArgumentException("The Swiper#edgeSide can not contain other value as" +
                        " the SwipeEdge.ALL is contained.");
            }
        }
    }
    setEnableSwipe(true);

    if (canSwipe(SwipeEdge.NONE)) {
        mEdgeFlag = EDGE_FLAG_NONE;
        return;
    }
    if (canSwipe(SwipeEdge.ALL)) {
        mEdgeFlag = ViewDragHelper.EDGE_ALL;
        return;
    }
    mEdgeFlag = EDGE_FLAG_NONE;
    if (canSwipe(SwipeEdge.LEFT)) {
        if (mEdgeFlag > 0) {
            mEdgeFlag |= ViewDragHelper.EDGE_LEFT;
        } else {
            mEdgeFlag = ViewDragHelper.EDGE_LEFT;
        }
    }
    if (canSwipe(SwipeEdge.RIGHT)) {
        if (mEdgeFlag > 0) {
            mEdgeFlag |= ViewDragHelper.EDGE_RIGHT;
        } else {
            mEdgeFlag = ViewDragHelper.EDGE_RIGHT;
        }
    }
    if (canSwipe(SwipeEdge.TOP)) {
        if (mEdgeFlag > 0) {
            mEdgeFlag |= ViewDragHelper.EDGE_TOP;
        } else {
            mEdgeFlag = ViewDragHelper.EDGE_TOP;
        }
    }
    if (canSwipe(SwipeEdge.BOTTOM)) {
        if (mEdgeFlag > 0) {
            mEdgeFlag |= ViewDragHelper.EDGE_BOTTOM;
        } else {
            mEdgeFlag = ViewDragHelper.EDGE_BOTTOM;
        }
    }
}