Example usage for android.support.v4.view ViewPropertyAnimatorListener ViewPropertyAnimatorListener

List of usage examples for android.support.v4.view ViewPropertyAnimatorListener ViewPropertyAnimatorListener

Introduction

In this page you can find the example usage for android.support.v4.view ViewPropertyAnimatorListener ViewPropertyAnimatorListener.

Prototype

ViewPropertyAnimatorListener

Source Link

Usage

From source file:com.kozhevin.example.carousel.CarouselItemAnimator.java

private void animateRemoveImpl(final ViewHolder pHolder) {
    final View view = pHolder.itemView;
    ViewCompat.animate(view).cancel();/*from   w ww  .  j  a va  2s .  c  om*/
    if (getTranslationValueY() != 0 && mIsUseTranslationAnimation) {
        ViewPropertyAnimatorCompat lViewPropertyAnimatorCompat = ViewCompat.animate(view);
        lViewPropertyAnimatorCompat.setDuration(350);
        lViewPropertyAnimatorCompat.translationY(getTranslationValueY());
        lViewPropertyAnimatorCompat.setListener(new ViewPropertyAnimatorListener() {

            @Override
            public void onAnimationStart(View arg0) {
            }

            @Override
            public void onAnimationEnd(View arg0) {
                animateAlhaRemove(view, pHolder);
            }

            @Override
            public void onAnimationCancel(View arg0) {
            }
        });
        ViewCompat.animate(view).start();
    } else {
        if (mIsUseTranslationAnimation) {
            view.setAlpha(0f);
            mIsUseTranslationAnimation = true;
        }
        animateAlhaRemove(view, pHolder);

    }
    mRemoveAnimations.add(pHolder);
}

From source file:com.example.android.supportv7.widget.AnimatedRecyclerView.java

private RecyclerView.ItemAnimator createAnimator() {
    return new DefaultItemAnimator() {
        List<ItemChangeAnimator> mPendingChangeAnimations = new ArrayList<>();
        ArrayMap<RecyclerView.ViewHolder, ItemChangeAnimator> mRunningAnimations = new ArrayMap<>();
        ArrayMap<MyViewHolder, Long> mPendingSettleList = new ArrayMap<>();

        @Override/*from w w w  .j  a  va  2s  . co m*/
        public void runPendingAnimations() {
            super.runPendingAnimations();
            for (ItemChangeAnimator anim : mPendingChangeAnimations) {
                anim.start();
                mRunningAnimations.put(anim.mViewHolder, anim);
            }
            mPendingChangeAnimations.clear();
            for (int i = mPendingSettleList.size() - 1; i >= 0; i--) {
                final MyViewHolder vh = mPendingSettleList.keyAt(i);
                final long duration = mPendingSettleList.valueAt(i);
                ViewCompat.animate(vh.textView).translationX(0f).alpha(1f).setDuration(duration)
                        .setListener(new ViewPropertyAnimatorListener() {
                            @Override
                            public void onAnimationStart(View view) {
                                dispatchAnimationStarted(vh);
                            }

                            @Override
                            public void onAnimationEnd(View view) {
                                ViewCompat.setTranslationX(vh.textView, 0f);
                                ViewCompat.setAlpha(vh.textView, 1f);
                                dispatchAnimationFinished(vh);
                            }

                            @Override
                            public void onAnimationCancel(View view) {

                            }
                        }).start();
            }
            mPendingSettleList.clear();
        }

        @Override
        public ItemHolderInfo recordPreLayoutInformation(RecyclerView.State state,
                RecyclerView.ViewHolder viewHolder, @AdapterChanges int changeFlags, List<Object> payloads) {
            MyItemInfo info = (MyItemInfo) super.recordPreLayoutInformation(state, viewHolder, changeFlags,
                    payloads);
            info.text = ((MyViewHolder) viewHolder).textView.getText();
            return info;
        }

        @Override
        public ItemHolderInfo recordPostLayoutInformation(RecyclerView.State state,
                RecyclerView.ViewHolder viewHolder) {
            MyItemInfo info = (MyItemInfo) super.recordPostLayoutInformation(state, viewHolder);
            info.text = ((MyViewHolder) viewHolder).textView.getText();
            return info;
        }

        @Override
        public boolean canReuseUpdatedViewHolder(RecyclerView.ViewHolder viewHolder) {
            return mEnableInPlaceChange;
        }

        @Override
        public void endAnimation(RecyclerView.ViewHolder item) {
            super.endAnimation(item);
            for (int i = mPendingChangeAnimations.size() - 1; i >= 0; i--) {
                ItemChangeAnimator anim = mPendingChangeAnimations.get(i);
                if (anim.mViewHolder == item) {
                    mPendingChangeAnimations.remove(i);
                    anim.setFraction(1f);
                    dispatchChangeFinished(item, true);
                }
            }
            for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
                ItemChangeAnimator animator = mRunningAnimations.get(item);
                if (animator != null) {
                    animator.end();
                    mRunningAnimations.removeAt(i);
                }
            }
            for (int i = mPendingSettleList.size() - 1; i >= 0; i--) {
                final MyViewHolder vh = mPendingSettleList.keyAt(i);
                if (vh == item) {
                    mPendingSettleList.removeAt(i);
                    dispatchChangeFinished(item, true);
                }
            }
        }

        @Override
        public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder,
                ItemHolderInfo preInfo, ItemHolderInfo postInfo) {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1 || oldHolder != newHolder) {
                return super.animateChange(oldHolder, newHolder, preInfo, postInfo);
            }
            return animateChangeApiHoneycombMr1(oldHolder, newHolder, preInfo, postInfo);
        }

        @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
        private boolean animateChangeApiHoneycombMr1(RecyclerView.ViewHolder oldHolder,
                RecyclerView.ViewHolder newHolder, ItemHolderInfo preInfo, ItemHolderInfo postInfo) {
            endAnimation(oldHolder);
            MyItemInfo pre = (MyItemInfo) preInfo;
            MyItemInfo post = (MyItemInfo) postInfo;
            MyViewHolder vh = (MyViewHolder) oldHolder;

            CharSequence finalText = post.text;

            if (pre.text.equals(post.text)) {
                // same content. Just translate back to 0
                final long duration = (long) (getChangeDuration()
                        * (ViewCompat.getTranslationX(vh.textView) / vh.textView.getWidth()));
                mPendingSettleList.put(vh, duration);
                // we set it here because previous endAnimation would set it to other value.
                vh.textView.setText(finalText);
            } else {
                // different content, get out and come back.
                vh.textView.setText(pre.text);
                final ItemChangeAnimator anim = new ItemChangeAnimator(vh, finalText, getChangeDuration()) {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        setFraction(1f);
                        dispatchChangeFinished(mViewHolder, true);
                    }

                    @Override
                    public void onAnimationStart(Animator animation) {
                        dispatchChangeStarting(mViewHolder, true);
                    }
                };
                mPendingChangeAnimations.add(anim);
            }
            return true;
        }

        @Override
        public ItemHolderInfo obtainHolderInfo() {
            return new MyItemInfo();
        }
    };
}

From source file:com.lll.core.learn.AnimatedRecyclerView.java

private RecyclerView.ItemAnimator createAnimator() {
    return new DefaultItemAnimator() {
        List<ItemChangeAnimator> mPendingChangeAnimations = new ArrayList<>();
        ArrayMap<RecyclerView.ViewHolder, ItemChangeAnimator> mRunningAnimations = new ArrayMap<>();
        ArrayMap<MyViewHolder, Long> mPendingSettleList = new ArrayMap<>();

        @Override/*from  ww w  .  j ava  2  s. c  om*/
        public void runPendingAnimations() {
            super.runPendingAnimations();
            for (ItemChangeAnimator anim : mPendingChangeAnimations) {
                anim.start();
                mRunningAnimations.put(anim.mViewHolder, anim);
            }
            mPendingChangeAnimations.clear();
            for (int i = mPendingSettleList.size() - 1; i >= 0; i--) {
                final MyViewHolder vh = mPendingSettleList.keyAt(i);
                final long duration = mPendingSettleList.valueAt(i);
                ViewCompat.animate(vh.textView) //View
                        .translationX(0f) //x??
                        .alpha(1f)//?
                        .setDuration(duration)//
                        .setListener(//?
                                new ViewPropertyAnimatorListener() {
                                    @Override
                                    public void onAnimationStart(View view) {
                                        dispatchAnimationStarted(vh);//RecycleView
                                    }

                                    @Override
                                    public void onAnimationEnd(View view) {
                                        ViewCompat.setTranslationX(vh.textView, 0f);
                                        ViewCompat.setAlpha(vh.textView, 1f);
                                        dispatchAnimationFinished(vh);//RecycleView
                                    }

                                    @Override
                                    public void onAnimationCancel(View view) {

                                    }
                                })
                        .start();//
            }
            mPendingSettleList.clear();
        }

        @Override
        public ItemHolderInfo recordPreLayoutInformation(RecyclerView.State state,
                RecyclerView.ViewHolder viewHolder, @AdapterChanges int changeFlags, List<Object> payloads) {
            MyItemInfo info = (MyItemInfo) super.recordPreLayoutInformation(state, viewHolder, changeFlags,
                    payloads);
            info.text = ((MyViewHolder) viewHolder).textView.getText();
            return info;
        }

        @Override
        public ItemHolderInfo recordPostLayoutInformation(RecyclerView.State state,
                RecyclerView.ViewHolder viewHolder) {
            MyItemInfo info = (MyItemInfo) super.recordPostLayoutInformation(state, viewHolder);
            info.text = ((MyViewHolder) viewHolder).textView.getText();
            return info;
        }

        @Override
        public boolean canReuseUpdatedViewHolder(RecyclerView.ViewHolder viewHolder) {
            return mEnableInPlaceChange;
        }

        @Override
        public void endAnimation(RecyclerView.ViewHolder item) {
            super.endAnimation(item);
            for (int i = mPendingChangeAnimations.size() - 1; i >= 0; i--) {
                ItemChangeAnimator anim = mPendingChangeAnimations.get(i);
                if (anim.mViewHolder == item) {
                    mPendingChangeAnimations.remove(i);
                    anim.setFraction(1f);
                    dispatchChangeFinished(item, true);
                }
            }
            for (int i = mRunningAnimations.size() - 1; i >= 0; i--) {
                ItemChangeAnimator animator = mRunningAnimations.get(item);
                if (animator != null) {
                    animator.end();
                    mRunningAnimations.removeAt(i);
                }
            }
            for (int i = mPendingSettleList.size() - 1; i >= 0; i--) {
                final MyViewHolder vh = mPendingSettleList.keyAt(i);
                if (vh == item) {
                    mPendingSettleList.removeAt(i);
                    dispatchChangeFinished(item, true);
                }
            }
        }

        @Override
        public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder,
                ItemHolderInfo preInfo, ItemHolderInfo postInfo) {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1 || oldHolder != newHolder) {
                return super.animateChange(oldHolder, newHolder, preInfo, postInfo);
            }
            return animateChangeApiHoneycombMr1(oldHolder, newHolder, preInfo, postInfo);
        }

        @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
        private boolean animateChangeApiHoneycombMr1(RecyclerView.ViewHolder oldHolder,
                RecyclerView.ViewHolder newHolder, ItemHolderInfo preInfo, ItemHolderInfo postInfo) {
            endAnimation(oldHolder);
            MyItemInfo pre = (MyItemInfo) preInfo;
            MyItemInfo post = (MyItemInfo) postInfo;
            MyViewHolder vh = (MyViewHolder) oldHolder;

            CharSequence finalText = post.text;

            if (pre.text.equals(post.text)) {
                // same content. Just translate back to 0
                final long duration = (long) (getChangeDuration()
                        * (ViewCompat.getTranslationX(vh.textView) / vh.textView.getWidth()));
                mPendingSettleList.put(vh, duration);
                // we set it here because previous endAnimation would set it to other value.
                vh.textView.setText(finalText);
            } else {
                // different content, get out and come back.
                vh.textView.setText(pre.text);
                final ItemChangeAnimator anim = new ItemChangeAnimator(vh, finalText, getChangeDuration()) {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        setFraction(1f);
                        dispatchChangeFinished(mViewHolder, true);
                    }

                    @Override
                    public void onAnimationStart(Animator animation) {
                        dispatchChangeStarting(mViewHolder, true);
                    }
                };
                mPendingChangeAnimations.add(anim);
            }
            return true;
        }

        @Override
        public ItemHolderInfo obtainHolderInfo() {
            return new MyItemInfo();
        }
    };
}

From source file:com.events.events.features.welcome.auth.LoginFragment.java

@Override
public void showNextSlide() {
    AnimUtils.animteViewsOut(new ViewPropertyAnimatorListener() {
        @Override/*www.  j  av a 2s  .co  m*/
        public void onAnimationStart(View view) {

        }

        @Override
        public void onAnimationEnd(View view) {
            ((WelcomeActivity) getActivity()).nextSlide();
        }

        @Override
        public void onAnimationCancel(View view) {

        }
    }, mLoginImage, mLoginWithAccountTitle, mEmailLayout, mPasswordLayout, mDontHaveAnAccount, mLoginButton);
}

From source file:com.tsoliveira.android.listeners.DragDropTouchListener.java

private void reset() {
    //Animate mobile view back to original position
    final View originalView = getViewByPosition(mobileViewCurrentPos);
    if (originalView != null && mobileView != null) {
        float y = getViewRawCoords(originalView)[1];
        mobileView.animate().y(y).setDuration(MOVE_DURATION).setListener(new AnimatorListenerAdapter() {
            @Override//from  w  ww . j av  a  2s  .co m
            public void onAnimationEnd(Animator animation) {

                if (mobileView != null) {
                    ViewCompat.animate(mobileView).z(ViewCompat.getZ(originalView)).setDuration(MOVE_DURATION)
                            .setListener(new ViewPropertyAnimatorListener() {
                                @Override
                                public void onAnimationStart(View view) {
                                }

                                @Override
                                public void onAnimationEnd(View view) {
                                    originalView.setVisibility(View.VISIBLE);
                                    ViewGroup parent = (ViewGroup) mobileView.getParent();
                                    parent.removeView(mobileView);
                                    mobileView = null;
                                }

                                @Override
                                public void onAnimationCancel(View view) {
                                }
                            }).start();
                }
            }
        });

    }

    dragging = false;
    mobileViewStartY = -1;
    mobileViewCurrentPos = -1;

}

From source file:com.brandon.mailbox.RecyclerSwipeListener.java

private boolean handleTouchEvent(MotionEvent motionEvent) {
    if (mViewWidth < 2) {
        mViewWidth = mRecyclerView.getWidth();
    }/* w w w .  ja v a2s. c o  m*/
    switch (motionEvent.getActionMasked()) {
    case MotionEvent.ACTION_DOWN: {
        if (mPaused) {
            break;
        }
        // Find the child view that was touched (perform a hit test)
        Rect rect = new Rect();
        int childCount = mRecyclerView.getChildCount();
        int[] listViewCoords = new int[2];
        mRecyclerView.getLocationOnScreen(listViewCoords);
        int x = (int) motionEvent.getRawX() - listViewCoords[0];
        int y = (int) motionEvent.getRawY() - listViewCoords[1];
        View child;
        for (int i = 0; i < childCount; i++) {
            child = mRecyclerView.getChildAt(i);
            child.getHitRect(rect);
            if (rect.contains(x, y)) {
                mDownView = child;
                break;
            }
        }
        if (mDownView != null && mAnimatingPosition != mRecyclerView.getChildLayoutPosition(mDownView)) {
            mAlpha = ViewCompat.getAlpha(mDownView);
            mDownX = motionEvent.getRawX();
            mDownY = motionEvent.getRawY();
            mDownPosition = mRecyclerView.getChildLayoutPosition(mDownView);
            mSwipingLeft = mSwipeListener.canSwipeLeft(mDownPosition);
            mSwipingRight = mSwipeListener.canSwipeRight(mDownPosition);
            if (mSwipingLeft || mSwipingRight) {
                mVelocityTracker = VelocityTracker.obtain();
                mVelocityTracker.addMovement(motionEvent);
            } else {
                mDownView = null;
            }
        }
        break;
    }
    case MotionEvent.ACTION_CANCEL: {
        if (mVelocityTracker == null) {
            break;
        }
        if (mDownView != null && mSwiping) {
            // cancel
            ViewCompat.animate(mDownView).translationX(0).alpha(mAlpha).setDuration(mAnimationTime)
                    .setListener(null);
        }
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mDownX = 0;
        mDownY = 0;
        mDownView = null;
        mDownPosition = ListView.INVALID_POSITION;
        mSwiping = false;
        break;
    }
    case MotionEvent.ACTION_UP: {
        if (mVelocityTracker == null) {
            break;
        }
        mFinalDelta = motionEvent.getRawX() - mDownX;
        mVelocityTracker.addMovement(motionEvent);
        mVelocityTracker.computeCurrentVelocity(1000);
        float velocityX = mVelocityTracker.getXVelocity();
        float absVelocityX = Math.abs(velocityX);
        float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
        boolean dismiss = false;
        boolean dismissRight = false;
        if (Math.abs(mFinalDelta) > mViewWidth / 2 && mSwiping) {
            dismiss = true;
            dismissRight = mFinalDelta > 0;
        } else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity
                && absVelocityY < absVelocityX && mSwiping) {
            // dismiss only if flinging in the same direction as dragging
            dismiss = (velocityX < 0) == (mFinalDelta < 0);
            dismissRight = mVelocityTracker.getXVelocity() > 0;
        }
        if (dismiss && mDownPosition != mAnimatingPosition && mDownPosition != ListView.INVALID_POSITION) {
            // dismiss
            final View downView = mDownView; // mDownView gets null'd before animation ends
            final int downPosition = mDownPosition;
            ++mDismissAnimationRefCount;
            mAnimatingPosition = mDownPosition;
            ViewCompat.animate(mDownView).translationX(dismissRight ? mViewWidth : -mViewWidth).alpha(0)
                    .setDuration(mAnimationTime).setListener(new ViewPropertyAnimatorListener() {
                        @Override
                        public void onAnimationStart(View view) {
                            // Do nothing.
                        }

                        @Override
                        public void onAnimationEnd(View view) {
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                                performDismiss(downView, downPosition);
                            }
                        }

                        @Override
                        public void onAnimationCancel(View view) {
                            // Do nothing.
                        }
                    });
        } else {
            // cancel
            ViewCompat.animate(mDownView).translationX(0).alpha(mAlpha).setDuration(mAnimationTime)
                    .setListener(null);
        }
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mDownX = 0;
        mDownY = 0;
        mDownView = null;
        mDownPosition = ListView.INVALID_POSITION;
        mSwiping = false;
        break;
    }
    case MotionEvent.ACTION_MOVE: {
        if (mVelocityTracker == null || mPaused) {
            break;
        }
        mVelocityTracker.addMovement(motionEvent);
        float deltaX = motionEvent.getRawX() - mDownX;
        float deltaY = motionEvent.getRawY() - mDownY;
        if (!mSwiping && Math.abs(deltaX) > mSlop && Math.abs(deltaY) < Math.abs(deltaX) / 2) {
            mSwiping = true;
            mSwipingSlop = (deltaX > 0 ? mSlop : -mSlop);
        }
        if (deltaX < 0 && !mSwipingLeft)
            mSwiping = false;
        if (deltaX > 0 && !mSwipingRight)
            mSwiping = false;
        if (mSwiping) {
            ViewCompat.setTranslationX(mDownView, deltaX - mSwipingSlop);
            ViewCompat.setAlpha(mDownView,
                    Math.max(0f, Math.min(mAlpha, mAlpha * (1f - Math.abs(deltaX) / mViewWidth))));
            return true;
        }
        break;
    }
    }
    return false;
}

From source file:br.com.halph.agendafeliz.util.SwipeableRecyclerViewTouchListener.java

private boolean handleTouchEvent(MotionEvent motionEvent) {
    if (mViewWidth < 2) {
        mViewWidth = mRecyclerView.getWidth();
    }//from w w w.  j  a va2 s .co m

    switch (motionEvent.getActionMasked()) {
    case MotionEvent.ACTION_DOWN: {
        if (mPaused) {
            break;
        }

        // Find the child view that was touched (perform a hit test)
        Rect rect = new Rect();
        int childCount = mRecyclerView.getChildCount();
        int[] listViewCoords = new int[2];
        mRecyclerView.getLocationOnScreen(listViewCoords);
        int x = (int) motionEvent.getRawX() - listViewCoords[0];
        int y = (int) motionEvent.getRawY() - listViewCoords[1];
        View child;
        for (int i = 0; i < childCount; i++) {
            child = mRecyclerView.getChildAt(i);
            child.getHitRect(rect);
            if (rect.contains(x, y)) {
                mDownView = child;
                break;
            }
        }

        if (mDownView != null && mAnimatingPosition != mRecyclerView.getChildLayoutPosition(mDownView)) {
            mAlpha = ViewCompat.getAlpha(mDownView);
            mDownX = motionEvent.getRawX();
            mDownY = motionEvent.getRawY();
            mDownPosition = mRecyclerView.getChildLayoutPosition(mDownView);
            mSwipingLeft = mSwipeListener.canSwipeLeft(mDownPosition);
            mSwipingRight = mSwipeListener.canSwipeRight(mDownPosition);
            if (mSwipingLeft || mSwipingRight) {
                mVelocityTracker = VelocityTracker.obtain();
                mVelocityTracker.addMovement(motionEvent);
            } else {
                mDownView = null;
            }
        }
        break;
    }

    case MotionEvent.ACTION_CANCEL: {
        if (mVelocityTracker == null) {
            break;
        }

        if (mDownView != null && mSwiping) {
            // cancel
            ViewCompat.animate(mDownView).translationX(0).alpha(mAlpha).setDuration(mAnimationTime)
                    .setListener(null);
        }
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mDownX = 0;
        mDownY = 0;
        mDownView = null;
        mDownPosition = ListView.INVALID_POSITION;
        mSwiping = false;
        break;
    }

    case MotionEvent.ACTION_UP: {
        if (mVelocityTracker == null) {
            break;
        }

        mFinalDelta = motionEvent.getRawX() - mDownX;
        mVelocityTracker.addMovement(motionEvent);
        mVelocityTracker.computeCurrentVelocity(1000);
        float velocityX = mVelocityTracker.getXVelocity();
        float absVelocityX = Math.abs(velocityX);
        float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
        boolean dismiss = false;
        boolean dismissRight = false;
        if (Math.abs(mFinalDelta) > mViewWidth / 2 && mSwiping) {
            dismiss = true;
            dismissRight = mFinalDelta > 0;
        } else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity
                && absVelocityY < absVelocityX && mSwiping) {
            // dismiss only if flinging in the same direction as dragging
            dismiss = (velocityX < 0) == (mFinalDelta < 0);
            dismissRight = mVelocityTracker.getXVelocity() > 0;
        }
        if (dismiss && mDownPosition != mAnimatingPosition && mDownPosition != ListView.INVALID_POSITION) {
            // dismiss
            final View downView = mDownView; // mDownView gets null'd before animation ends
            final int downPosition = mDownPosition;
            ++mDismissAnimationRefCount;
            mAnimatingPosition = mDownPosition;
            ViewCompat.animate(mDownView).translationX(dismissRight ? mViewWidth : -mViewWidth).alpha(0)
                    .setDuration(mAnimationTime).setListener(new ViewPropertyAnimatorListener() {
                        @Override
                        public void onAnimationStart(View view) {
                            // Do nothing.
                        }

                        @Override
                        public void onAnimationEnd(View view) {
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                                performDismiss(downView, downPosition);
                            }
                        }

                        @Override
                        public void onAnimationCancel(View view) {
                            // Do nothing.
                        }
                    });
        } else {
            // cancel
            ViewCompat.animate(mDownView).translationX(0).alpha(mAlpha).setDuration(mAnimationTime)
                    .setListener(null);
        }
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mDownX = 0;
        mDownY = 0;
        mDownView = null;
        mDownPosition = ListView.INVALID_POSITION;
        mSwiping = false;
        break;
    }

    case MotionEvent.ACTION_MOVE: {
        if (mVelocityTracker == null || mPaused) {
            break;
        }

        mVelocityTracker.addMovement(motionEvent);
        float deltaX = motionEvent.getRawX() - mDownX;
        float deltaY = motionEvent.getRawY() - mDownY;
        if (!mSwiping && Math.abs(deltaX) > mSlop && Math.abs(deltaY) < Math.abs(deltaX) / 2) {
            mSwiping = true;
            mSwipingSlop = (deltaX > 0 ? mSlop : -mSlop);
        }

        if (deltaX < 0 && !mSwipingLeft)
            mSwiping = false;
        if (deltaX > 0 && !mSwipingRight)
            mSwiping = false;

        if (mSwiping) {
            ViewCompat.setTranslationX(mDownView, deltaX - mSwipingSlop);
            ViewCompat.setAlpha(mDownView,
                    Math.max(0f, Math.min(mAlpha, mAlpha * (1f - Math.abs(deltaX) / mViewWidth))));
            return true;
        }
        break;
    }
    }

    return false;
}

From source file:com.dpg.kodimote.view.SwipeableRecyclerViewTouchListener.java

private boolean handleTouchEvent(MotionEvent motionEvent) {
    if (mViewWidth < 2) {
        mViewWidth = mRecyclerView.getWidth();
    }/*from ww  w.  j  a  va2s .c  o m*/

    Log.d("Swipe", motionEvent.getActionMasked() + "");
    switch (motionEvent.getActionMasked()) {
    case MotionEvent.ACTION_DOWN: {
        if (mPaused) {
            break;
        }

        // Find the child view that was touched (perform a hit test)
        Rect rect = new Rect();
        int childCount = mRecyclerView.getChildCount();
        int[] listViewCoords = new int[2];
        mRecyclerView.getLocationOnScreen(listViewCoords);
        int x = (int) motionEvent.getRawX() - listViewCoords[0];
        int y = (int) motionEvent.getRawY() - listViewCoords[1];
        View child;
        for (int i = 0; i < childCount; i++) {
            child = mRecyclerView.getChildAt(i);
            child.getHitRect(rect);
            if (rect.contains(x, y)) {
                mDownView = child;
                break;
            }
        }

        if (mDownView != null && mAnimatingPosition != mRecyclerView.getChildLayoutPosition(mDownView)) {
            mAlpha = ViewCompat.getAlpha(mDownView);
            mDownX = motionEvent.getRawX();
            mDownY = motionEvent.getRawY();
            mDownPosition = mRecyclerView.getChildLayoutPosition(mDownView);
            mSwipingLeft = mSwipeListener.canSwipeLeft(mDownPosition);
            mSwipingRight = mSwipeListener.canSwipeRight(mDownPosition);
            if (mSwipingLeft || mSwipingRight) {
                mVelocityTracker = VelocityTracker.obtain();
                mVelocityTracker.addMovement(motionEvent);
            } else {
                mDownView = null;
            }
        }
        break;
    }

    case MotionEvent.ACTION_CANCEL: {
        if (mVelocityTracker == null) {
            break;
        }

        if (mDownView != null && mSwiping) {
            // cancel
            ViewCompat.animate(mDownView).translationX(0).alpha(mAlpha).setDuration(mAnimationTime)
                    .setListener(null);
        }
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mDownX = 0;
        mDownY = 0;
        mDownView = null;
        mDownPosition = ListView.INVALID_POSITION;
        mSwiping = false;
        break;
    }

    case MotionEvent.ACTION_UP: {
        if (mVelocityTracker == null) {
            break;
        }

        mFinalDelta = motionEvent.getRawX() - mDownX;
        mVelocityTracker.addMovement(motionEvent);
        mVelocityTracker.computeCurrentVelocity(1000);
        float velocityX = mVelocityTracker.getXVelocity();
        float absVelocityX = Math.abs(velocityX);
        float absVelocityY = Math.abs(mVelocityTracker.getYVelocity());
        boolean dismiss = false;
        boolean dismissRight = false;
        if (Math.abs(mFinalDelta) > mViewWidth / 2 && mSwiping) {
            dismiss = true;
            dismissRight = mFinalDelta > 0;
        } else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity
                && absVelocityY < absVelocityX && mSwiping) {
            // dismiss only if flinging in the same direction as dragging
            dismiss = (velocityX < 0) == (mFinalDelta < 0);
            dismissRight = mVelocityTracker.getXVelocity() > 0;
        }
        if (dismiss && mDownPosition != mAnimatingPosition && mDownPosition != ListView.INVALID_POSITION) {
            // dismiss
            final View downView = mDownView; // mDownView gets null'd before animation ends
            final int downPosition = mDownPosition;
            ++mDismissAnimationRefCount;
            mAnimatingPosition = mDownPosition;
            ViewCompat.animate(mDownView).translationX(dismissRight ? mViewWidth : -mViewWidth).alpha(0)
                    .setDuration(mAnimationTime).setListener(new ViewPropertyAnimatorListener() {
                        @Override
                        public void onAnimationStart(View view) {
                            // Do nothing.
                        }

                        @Override
                        public void onAnimationEnd(View view) {
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                                performDismiss(downView, downPosition);
                            }
                        }

                        @Override
                        public void onAnimationCancel(View view) {
                            // Do nothing.
                        }
                    });
        } else {
            // cancel
            ViewCompat.animate(mDownView).translationX(0).alpha(mAlpha).setDuration(mAnimationTime)
                    .setListener(null);
        }
        mVelocityTracker.recycle();
        mVelocityTracker = null;
        mDownX = 0;
        mDownY = 0;
        mDownView = null;
        mDownPosition = ListView.INVALID_POSITION;
        mSwiping = false;
        break;
    }

    case MotionEvent.ACTION_MOVE: {
        if (mVelocityTracker == null || mPaused) {
            break;
        }

        mVelocityTracker.addMovement(motionEvent);
        float deltaX = motionEvent.getRawX() - mDownX;
        float deltaY = motionEvent.getRawY() - mDownY;
        if (!mSwiping && Math.abs(deltaX) > mSlop && Math.abs(deltaY) < Math.abs(deltaX) / 2) {
            mSwiping = true;
            mSwipingSlop = (deltaX > 0 ? mSlop : -mSlop);
        }

        if (deltaX < 0 && !mSwipingLeft)
            mSwiping = false;
        if (deltaX > 0 && !mSwipingRight)
            mSwiping = false;

        if (mSwiping) {
            ViewCompat.setTranslationX(mDownView, deltaX - mSwipingSlop);
            ViewCompat.setAlpha(mDownView,
                    Math.max(0f, Math.min(mAlpha, mAlpha * (1f - Math.abs(deltaX) / mViewWidth))));
            return true;
        }
        break;
    }
    }

    return false;
}

From source file:vc908.stickerfactory.ui.advancedrecyclerview.swipeable.ItemSlidingAnimator.java

private boolean animateSlideInternal(final RecyclerView.ViewHolder holder, int translationX, long duration,
        Interpolator interpolator) {// www.ja va  2  s  .  c o m
    if (!(holder instanceof SwipeableItemViewHolder)) {
        return false;
    }

    final View containerView = ((SwipeableItemViewHolder) holder).getSwipeableContainerView();

    final int prevTranslationX = (int) (ViewCompat.getTranslationX(containerView) + 0.5f);

    endAnimation(holder);

    final int curTranslationX = (int) (ViewCompat.getTranslationX(containerView) + 0.5f);
    final int toX = translationX;

    if (curTranslationX == toX) {
        return false;
    }

    if (duration == 0 || Math.abs(toX - prevTranslationX) <= mImmediatelySetTranslationThreshold) {
        ViewCompat.setTranslationX(containerView, toX);
        return false;
    }

    ViewCompat.setTranslationX(containerView, prevTranslationX);

    final ViewPropertyAnimatorCompat animator = ViewCompat.animate(containerView);

    animator.setDuration(duration);
    if (interpolator != null) {
        animator.setInterpolator(interpolator);
    }
    animator.translationX(toX);
    animator.setListener(new ViewPropertyAnimatorListener() {
        @Override
        public void onAnimationStart(View view) {
            if (animatorListener != null) {
                animatorListener.onAnimationStart(view);
            }
        }

        @Override
        public void onAnimationEnd(View view) {
            animator.setListener(null);
            mActive.remove(holder);
            ViewCompat.setTranslationX(view, toX);
            if (animatorListener != null) {
                animatorListener.onAnimationEnd(view);
            }
        }

        @Override
        public void onAnimationCancel(View view) {
            if (animatorListener != null) {
                animatorListener.onAnimationCancel(view);
            }
        }
    });

    mActive.add(holder);

    animator.start();

    return true;
}

From source file:com.test.xujixiao.xjx.widget.view.swipe_listview.SwipeListViewTouchListener.java

/**
 * Create choice animation//from  w  w w  .  j av a  2  s .  c  om
 *
 * @param view     affected view
 * @param position list position
 */
private void generateChoiceAnimate(final View view, final int position) {
    animate(view).translationX(0).setDuration(animationTime).setListener(new ViewPropertyAnimatorListener() {
        @Override
        public void onAnimationStart(View view) {

        }

        @Override
        public void onAnimationCancel(View view) {

        }

        @Override
        public void onAnimationEnd(View animation) {
            swipeListView.resetScrolling();
            resetCell();
        }
    });
}