Google Inbox, как RecyclerView элемент открытой анимации
В настоящее время я пытаюсь реализовать Google Inbox, как RecyclerView
Поведение, и мне очень любопытно на предмет анимации открытия электронной почты.
У меня вопрос: как это сделать? Я имею в виду, какой метод они использовали? Они использовали ItemAnimator.dispatchChangeStarting()
и изменить его высоту, чтобы заполнить родительский? Или что-то другое? И если они делают, как они делают это с жестом тяги в то время как под RecyclerView
элементы слегка видны.
Может кто-нибудь помочь мне с указанием на какую-то библиотеку или фрагменты кода / примеры?
1 ответ
Вы имеете в виду: рециклер просматривает как загруженные элементы, или как только элемент и нажав кнопку загрузки следующего экрана.
Я оставляю пример того, как я заряжаю предметы в утилитарном обзоре, и я даю анимацию
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);
...}
И если нет в обзоре переработчика, вы можете передать макет и использовать эту анимацию или создать ее из этого.
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;
}