gpt4 book ai didi

Android 列表项在加载时动画一次

转载 作者:行者123 更新时间:2023-11-29 01:37:56 25 4
gpt4 key购买 nike

我有一个 ListView ,其中每个项目都动画显示在 View 中。我基本上创建了一个类似于 here 中的 Material Design 动画的动画.动画如下:

<translate
android:fromXDelta="0%" android:toXDelta="0%"
android:fromYDelta="50%" android:toYDelta="0%"
android:duration="750" />
<alpha
android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="600"/>

这与一个偏移量相结合,使每行项目淡入淡出的时间比前一个稍晚(在适配器 getView 中完成):

 Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.listitem_up);
animation.setStartOffset(offset);
row.startAnimation(animation);
offset += 100;

现在最初创建列表时,所有内容都是动画并且很好。但是,滚动显示的任何后续项目都有越来越长的偏移量,因为它永远不会重置。我不知道如何 a) 在滚动之前重置偏移量,或者 b) 仅在初始加载时出现一次动画。

我调查了滚动监听器,但从我自己的测试来看,它似乎甚至在没有滚动的初始加载时也会被触发,所以我对它的了解还不够,无法提出解决方案。

如有任何建议,我们将不胜感激。

最佳答案

getView 中应该有这段代码吧?

尝试:

Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.listitem_up);
animation.setStartOffset(position * 100);
row.startAnimation(animation);

这样,偏移量将始终为 position * 100,这在 getView 尝试回收/重用该行时可能会有所帮助。

编辑:

我找到了这个,你可能想看看:animate listView childs only once they appear

基本上,他做了与我的回答相同的事情,并进行了更多验证。

关于Android 列表项在加载时动画一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26686643/

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