in Fido/app/src/main/java/com/fido/example/fido2apiexample/utils/CustomItemAnimator.java [39:103]
public void runPendingAnimations() {
Log.i(TAG, "runPendingAnimations");
int animationDuration = 300;
if (!mPendingAdd.isEmpty()) {
for (final RecyclerView.ViewHolder viewHolder : mPendingAdd) {
View target = viewHolder.itemView;
target.setPivotX(target.getMeasuredWidth() / 2);
target.setPivotY(target.getMeasuredHeight() / 2);
AnimatorSet animator = new AnimatorSet();
animator.playTogether(
ObjectAnimator.ofFloat(target, "translationX", -target.getMeasuredWidth(), 0.0f),
ObjectAnimator.ofFloat(target, "alpha", target.getAlpha(), 1.0f)
);
animator.setTarget(target);
animator.setDuration(animationDuration);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setStartDelay((animationDuration * viewHolder.getPosition()) / 10);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
mPendingAdd.remove(viewHolder);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
animator.start();
}
}
if (!mPendingRemove.isEmpty()) {
for (final RecyclerView.ViewHolder viewHolder : mPendingRemove) {
View target = viewHolder.itemView;
target.setPivotX(target.getMeasuredWidth() / 2);
target.setPivotY(target.getMeasuredHeight() / 2);
AnimatorSet animator = new AnimatorSet();
animator.playTogether(
ObjectAnimator.ofFloat(target, "translationX", 0.0f, target.getMeasuredWidth()),
ObjectAnimator.ofFloat(target, "alpha", target.getAlpha(), 0.0f)
);
animator.setTarget(target);
animator.setDuration(animationDuration);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setStartDelay((animationDuration * viewHolder.getPosition()) / 10);
animator.start();
}
}
}