目前,我正在尝试像RecyclerViewbehaivior 一样实现Google Inbox ,并且我对电子邮件打开动画非常好奇。
RecyclerView
我的问题是:该怎么做?我的意思是,他们使用了哪种方法?他们是否使用ItemAnimator.dispatchChangeStarting()并更改了填充父母的高度?还是其他?如果这样做的话,他们如何通过拉动手势使其闭合,而底层RecyclerView元素则稍微可见。
ItemAnimator.dispatchChangeStarting()
谁能帮助我指向一些库或代码段/示例?
您的意思是:将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; }