Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. package dk.shape.goboat.animation.animators;
  2.  
  3. import android.animation.Animator;
  4. import android.animation.AnimatorSet;
  5. import android.animation.ObjectAnimator;
  6. import android.support.annotation.NonNull;
  7. import android.support.annotation.Nullable;
  8. import android.support.v4.view.ViewCompat;
  9. import android.support.v7.widget.DefaultItemAnimator;
  10. import android.support.v7.widget.RecyclerView;
  11. import android.view.View;
  12. import android.view.animation.AccelerateDecelerateInterpolator;
  13.  
  14. import dk.shape.goboat.animation.utils.AnimUtils;
  15. import dk.shape.goboat.animation.utils.SimpleAnimatorListener;
  16.  
  17. //
  18. // SlideItemAnimator
  19. // GoBoat
  20. //
  21. // Created by Ben De La Haye on 13/01/2017.
  22. // Copyright (c) 2017 SHAPE A/S. All rights reserved.
  23. //
  24. public class SlideItemAnimator extends DefaultItemAnimator {
  25.  
  26. @Override
  27. public boolean canReuseUpdatedViewHolder(RecyclerView.ViewHolder viewHolder) {
  28. return false;
  29. }
  30.  
  31. @Override
  32. public boolean animateDisappearance(@NonNull RecyclerView.ViewHolder viewHolder, @NonNull ItemHolderInfo preLayoutInfo, @Nullable ItemHolderInfo postLayoutInfo) {
  33.  
  34. ObjectAnimator slideAnimator = ObjectAnimator.ofFloat(viewHolder.itemView, "translationX", -viewHolder.itemView.getWidth());
  35. ObjectAnimator fadeAnimator = ObjectAnimator.ofInt(viewHolder.itemView, "alpha", 0);
  36.  
  37. AnimatorSet animatorSet = new AnimatorSet();
  38. animatorSet.playTogether(slideAnimator, fadeAnimator);
  39. animatorSet.setDuration(200);
  40. fadeAnimator.setInterpolator(AnimUtils.getExitInterpolator());
  41. animatorSet.addListener(new SimpleAnimatorListener() {
  42. @Override
  43. public void onAnimationEnd(Animator animation) {
  44. dispatchAnimationFinished(viewHolder);
  45. dispatchRemoveFinished(viewHolder);
  46. }
  47. });
  48. animatorSet.start();
  49. dispatchRemoveStarting(viewHolder);
  50.  
  51. return true;
  52. }
  53.  
  54. @Override
  55. public boolean animateAppearance(@NonNull RecyclerView.ViewHolder viewHolder, @Nullable ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) {
  56.  
  57. ObjectAnimator fadeAnimator = ObjectAnimator.ofInt(viewHolder.itemView, "alpha", 0, 1);
  58. fadeAnimator.setDuration(200);
  59. fadeAnimator.setInterpolator(AnimUtils.getEnterInterpolator());
  60. fadeAnimator.addListener(new SimpleAnimatorListener() {
  61. @Override
  62. public void onAnimationEnd(Animator animation) {
  63. dispatchAnimationFinished(viewHolder);
  64. dispatchAddFinished(viewHolder);
  65. }
  66. });
  67. fadeAnimator.start();
  68. dispatchAddStarting(viewHolder);
  69.  
  70. return true;
  71. }
  72.  
  73. @Override
  74. public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) {
  75.  
  76. final View view = holder.itemView;
  77.  
  78. fromX += ViewCompat.getTranslationX(view);
  79. fromY += ViewCompat.getTranslationY(view);
  80.  
  81. int deltaX = toX - fromX;
  82. int deltaY = toY - fromY;
  83. if (deltaX == 0 && deltaY == 0) {
  84. dispatchMoveFinished(holder);
  85. return false;
  86. }
  87.  
  88. if (deltaX != 0) {
  89. ViewCompat.setTranslationX(view, -deltaX);
  90. }
  91. if (deltaY != 0) {
  92. ViewCompat.setTranslationY(view, -deltaY);
  93. }
  94.  
  95. ObjectAnimator horizontalSlideAnimator = ObjectAnimator.ofFloat(view, "translationX", 0);
  96. ObjectAnimator verticalSlideAnimator = ObjectAnimator.ofFloat(view, "translationY", 0);
  97.  
  98. AnimatorSet animatorSet = new AnimatorSet();
  99. animatorSet.playTogether(horizontalSlideAnimator, verticalSlideAnimator);
  100. animatorSet.setStartDelay(200);
  101. animatorSet.setDuration(300);
  102. animatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
  103. animatorSet.addListener(new SimpleAnimatorListener() {
  104. @Override
  105. public void onAnimationStart(Animator animation) {
  106. dispatchMoveStarting(holder);
  107. }
  108.  
  109. @Override
  110. public void onAnimationEnd(Animator animation) {
  111. dispatchAnimationFinished(holder);
  112. dispatchMoveFinished(holder);
  113. }
  114. });
  115. animatorSet.start();
  116.  
  117. return true;
  118. }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement