滚动时动画回收视图

时间:2015-10-17 11:25:34

标签: android animation android-recyclerview objectanimator

我通过Slidenerd观看了YouTube视频:

https://www.youtube.com/watch?v=e8ifO1m9g_Q

他建议如果你想在recyclerview中使用动画,请在recyclerview的onBindViewHolder代码中使用以下代码:

ObjectAnimator objectAnimatorTranslateY;
if (position > previousPosition) { //this should only activate animation when scrolling up
    objectAnimatorTranslateY = ObjectAnimator.ofFloat(holder.itemView, "translationY", 200, 0 );
    objectAnimatorTranslateY.setDuration(300);
    objectAnimatorTranslateY.start();
}
previousPosition = position;

我已将previousPosition作为成员变量实例化为0。

代码会为recyclerview中的项目设置动画,以便在您滚动时显示为从屏幕底部飞入。

代码正常运行,但我未能实现的是当列表首次出现在屏幕上时如何阻止代码运行。

我不希望首次打开应用时动画列表项,但只有在向上滚动时才能动画。当Recyclerview首次出现在屏幕上时,如何阻止动画师启动?

1 个答案:

答案 0 :(得分:0)

这似乎是一个黑客,但我认为你可以检查项目的 Y 位置,并将其与 ScreenHeight 进行比较。如果@Component({ selector: 'my-app', directives: [ ], pipes: [ ], templateUrl: 'src/main.html', // I need to capture the location change and apply a css animation animations: [ // Do I need a state for this???? state('in', style({transform: 'translateX(0)'})), transition('void => *', [ style({transform: 'translateX(-100%)'}), animate(100) ]), transition('* => void', [ animate(100, style({transform: 'translateX(100%)'})) ]) ]) ] }) 然后运行出现动画。