Входящие в Google Inbox, такие как RecyclerView, открывают анимацию

В настоящее время я пытаюсь внедрить Google Inbox, например RecyclerView behaivior, и мне очень любопытно, как открывать электронную почту.

Мой вопрос: как это сделать? Я имею в виду, какой метод они использовали? Использовали ли они ItemAnimator.dispatchChangeStarting() и изменили его высоту, чтобы заполнить родительский? Или что-то другое? И если они это сделают, то как они приближаются к жестом тяги, в то время как основные элементы RecyclerView немного видны.

Может ли кто-нибудь помочь мне указать на какую-нибудь библиотеку или фрагменты кода/примеры?

Ответ 1

Вы имеете в виду: recyclerview как загрузочные элементы, или один раз элемент и нажатие на загрузку следующего экрана.

Я оставляю пример того, как я заряжаю элементы в recyclerview, и я даю анимацию

public class CreateAnimationView {

private static int contador;
Integer colorFrom = R.color.myAccentColor;
Integer colorTo = Color.RED;

public static AnimatorSet createAnimation(View view) {
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(view, "alpha",
            0f);
    fadeOut.setDuration(300);
    ObjectAnimator mover = ObjectAnimator.ofFloat(view,
            "translationX", -500f, 0f);
    mover.setDuration(400);
    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(view, "alpha",
            0f, 1f);
    fadeIn.setDuration(300);
    AnimatorSet animatorSet = new AnimatorSet();

    animatorSet.play(mover);
    animatorSet.start();
    return animatorSet;

 }
... more animations methods.
}

В вашем RecyclerViewAdapter:

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {

    GruposCardView gruposCardView = gruposCardViews.get(position);

    CreateAnimationView.createAnimationRandom(viewHolder.cardView);
   ...}

И если нет в recyclerview, вы можете передать макет и использовать эту анимацию или создать ее из этого.

 public static AnimatorSet createAnimationCollapseXY(View view) {
    ObjectAnimator scaleXOut = ObjectAnimator.ofFloat(view, "scaleX", 1f, 0f).setDuration(400);
    ObjectAnimator scaleXIn = ObjectAnimator.ofFloat(view, "scaleX", 0f, 1f).setDuration(300);
    ObjectAnimator scaleYOut = ObjectAnimator.ofFloat(view, "scaleY", 1f, 0f).setDuration(400);
    ObjectAnimator scaleYIn = ObjectAnimator.ofFloat(view, "scaleY", 0f, 1f).setDuration(300);
    ObjectAnimator rotateClockWise = ObjectAnimator.ofFloat(view, "rotation", 0f, 360f).setDuration(400);
    ObjectAnimator rotateCounterClockWise = ObjectAnimator.ofFloat(view, "rotation", 0f, -360f).setDuration(400);


    AnimatorSet animatorSet = new AnimatorSet();

    animatorSet.playTogether(scaleXIn, scaleYIn);
    //animatorSet.setStartDelay(1200);
    animatorSet.start();
    return animatorSet;
}