Skip to content

Instantly share code, notes, and snippets.

@enq3
Last active April 11, 2017 05:25
Show Gist options
  • Select an option

  • Save enq3/2dae8e769e9606349b22fdbdf65c41a1 to your computer and use it in GitHub Desktop.

Select an option

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

Miha-x64 commented Apr 3, 2017

Copy link
Copy Markdown

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