public void finish(boolean animate) {
    if (mStarted) {
      mRecyclerView.removeItemDecoration(this);
    }

    final RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator();
    if (itemAnimator != null) {
      itemAnimator.endAnimations();
    }
    mRecyclerView.stopScroll();

    if (mSwapTargetItem != null) {
      // return to default position
      updateSwapTargetTranslation(mDraggingItem, mSwapTargetItem, mCurTranslationPhase);
      moveToDefaultPosition(mSwapTargetItem.itemView, animate);
      mSwapTargetItem = null;
    }

    mRange = null;
    mDraggingItem = null;
    mTranslationY = 0;
    mDraggingItemHeight = 0;
    mCurTranslationPhase = 0.0f;
    mReqTranslationPhase = 0.0f;
    mStarted = false;
  }
コード例 #2
0
  public void finish(boolean animate) {
    if (mStarted) {
      mRecyclerView.removeItemDecoration(this);
    }

    final RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator();
    if (itemAnimator != null) {
      itemAnimator.endAnimations();
    }
    mRecyclerView.stopScroll();

    // return to default position
    updateDraggingItemPosition(mTranslationX, mTranslationY);
    if (mDraggingItemViewHolder != null) {
      moveToDefaultPosition(mDraggingItemViewHolder.itemView, animate);
    }

    // show
    if (mDraggingItemViewHolder != null) {
      mDraggingItemViewHolder.itemView.setVisibility(View.VISIBLE);
    }
    mDraggingItemViewHolder = null;

    if (mDraggingItemImage != null) {
      mDraggingItemImage.recycle();
      mDraggingItemImage = null;
    }

    mRange = null;
    mTranslationX = 0;
    mTranslationY = 0;
    mTranslationLeftLimit = 0;
    mTranslationRightLimit = 0;
    mTranslationTopLimit = 0;
    mTranslationBottomLimit = 0;
    mTouchPositionX = 0;
    mTouchPositionY = 0;
    mStarted = false;
  }