Skip to content

Instantly share code, notes, and snippets.

@enq3
Last active April 11, 2017 05:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save enq3/2dae8e769e9606349b22fdbdf65c41a1 to your computer and use it in GitHub Desktop.
Save enq3/2dae8e769e9606349b22fdbdf65c41a1 to your computer and use it in GitHub Desktop.
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.mikepenz.itemanimators.DefaultAnimator;
public class ItemAnimator extends DefaultAnimator<ItemAnimator> {
public boolean useAnimation = true;
public int offset = 0;
public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
if(useAnimation) {
ViewCompat.setTranslationY(holder.itemView, holder.itemView.getHeight() * 0.4f);
ViewCompat.setAlpha(holder.itemView, 0.0f);
}
}
public ViewPropertyAnimatorCompat addAnimation(final RecyclerView.ViewHolder holder) {
holder.itemView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
int off = holder.getAdapterPosition()-offset < 0 ? holder.getLayoutPosition() : holder.getAdapterPosition()-offset;
return ViewCompat.animate(holder.itemView)
.alpha(1)
.translationY(0)
.setDuration(useAnimation ? getAddDuration() + 30 * off : 0)
.setInterpolator(getInterpolator())
.setStartDelay(useAnimation ? (off) * 15L : 0);
}
public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
ViewCompat.setAlpha(holder.itemView, 1);
}
public ViewPropertyAnimatorCompat removeAnimation(final RecyclerView.ViewHolder holder) {
holder.itemView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
return ViewCompat.animate(holder.itemView)
.alpha(0)
.setDuration(useAnimation ? getRemoveDuration() : 0)
.setInterpolator(getInterpolator())
.setStartDelay(0);
}
public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
ViewCompat.setAlpha(holder.itemView, 1);
}
public ViewPropertyAnimatorCompat changeOldAnimation(RecyclerView.ViewHolder holder, ChangeInfo changeInfo) {
return ViewCompat.animate(holder.itemView).setDuration(getChangeDuration()).alpha(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY).setInterpolator(getInterpolator());
}
public ViewPropertyAnimatorCompat changeNewAnimation(RecyclerView.ViewHolder holder) {
return ViewCompat.animate(holder.itemView).translationX(0).translationY(0).setDuration(getChangeDuration()).alpha(1).setInterpolator(getInterpolator());
}
public void changeAnimationCleanup(RecyclerView.ViewHolder holder) {
ViewCompat.setAlpha(holder.itemView, 1);
}
}
@Miha-x64
Copy link

Miha-x64 commented Apr 3, 2017

Thanks for this! Looks cute, especially with DecelerateInterpolator and 300 ms animation duration.
The class is called ItemAnimator, but gist called wrong — ItemAdapter.java.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment