我在Android上使用一组填充ArrayList
的数据(ListView
)。在我更改排序模式时,我重新排序链接到适配器的数据,并调用notifyOnDataChanged()
来更新列表。
这可以完成这项工作,但我希望能够将每个项目设置为新的位置(就像在iOS上一样),因为两个数据集都包含相同的项目 - 只是重新排序。
我花了一些时间考虑如何制作动画,并决定将列表中较低的所有项目设置为零高度,然后在新位置动画回原来的大小。这样,当数据在其上方消失时,所有在数据中向上移动的项目实际上会在列表中向上移动。这就是想法,但我无法弄清楚如何实现它。
数据可以这样表示:
Set A | index | Set B
------+-------+------
A | 0 | B
B | 1 | A
C | 2 | C
D | 3 | F
E | 4 | G
F | 5 | E
G | 6 | D
我只是在寻找iOS默认处理Android的东西。不应该这么难。
答案 0 :(得分:11)
做了一个小例子,动画重新排序这样的列表。动画并不像你描述的那样,但希望它可以帮助你达到你想要的效果。
https://github.com/fabrantes/widgetexamples
流程是这样的:
答案 1 :(得分:3)
我希望这是解决问题的方法
<ListView
android:id="@+id/listUniversal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layoutAnimation="@anim/controller">
</ListView>
anim.xml
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/scale_1"
android:delay="50%" />
scale_1.xml
<scale
android:duration="200"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="10%"
android:pivotY="10%"
android:startOffset="100"
android:toXScale="1"
android:toYScale="1.0" />