我通过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首次出现在屏幕上时,如何阻止动画师启动?
答案 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%)'}))
])
])
]
})
然后运行出现动画。