gpt4 book ai didi

android - RecyclerView 添加 Item 动画

转载 作者:行者123 更新时间:2023-11-29 15:46:22 30 4
gpt4 key购买 nike

我目前正在为 RecyclerView 项目添加收入动画。我想要它就像 Google+ Android 应用程序一样。这是我的代码 fragment :

动画/up_from_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="@android:anim/decelerate_interpolator">

<translate
android:fromXDelta="0%" android:toXDelta="0%"
android:fromYDelta="60%" android:toYDelta="0%"
android:duration="500" />
</set>

在 Adapter 类中,我添加函数 startAnimation(itemHolder.itemView, position); 在函数 onBindViewHolder

public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
...
startAnimation(holder.rootView, position);
}

startAnimation() 是这样的:

protected void startAnimation(View view, int position) {
if (position > lastPosition) {
Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.up_from_bottom);
view.startAnimation(animation);
lastPosition = position;
}
}

看起来像Google+ Android App 的列表动画,但是它有一个bug,当我快速滚动时,动画不完美,比如第一个位置和当前位置似乎同时执行动画。

我只是想要像Google+那样的动画,请问怎么解决,或者有什么办法。

我想试试recyclerview-animators ,这是一个很棒的库,但我仍然做我想做的事。

请帮忙!谢谢!

最佳答案

当您快速滚动时会出现您的“错误”,因为当它滚出显示时,viewholder 上的动画仍在运行,并且当 recyclerview 回收它时,您正在将新动画绑定(bind)到 viewholder。

您应该覆盖 onViewDetachedFromWindow 并清除方法中 View 上的动画。

这将确保在 View 上运行的任何动画在发送到回收器重新使用之前将被清除,并且您可以安全地在 View 上运行新动画。

关于android - RecyclerView 添加 Item 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815155/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com