animation列表视图数据更改

我正在使用一组填充ListView的数据( ArrayList )来处理Android。 当我改变sorting模式的时候,我重新排列链接到适配器的数据,并调用notifyOnDataChanged()来更新列表。

这样做的工作,但我想能够animation每个项目到其新位置(如在iOS),因为两个数据集包含相同的项目 – 只是重新sorting。

我花了一些时间思考如何为此设置animation,并决定将出现在列表中较低位置的所有项目animation化为零高度,然后在新位置将其设置回正常大小。 这会让所有在数据中上移的项目实际上移到列表中,因为项目在其上方消失。 这就是这个想法,但我不知道如何实现它。

数据可以像这样表示:

 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的东西。 这不应该这么难。

Solutions Collecting From Web of "animation列表视图数据更改"

做了一个小例子,animation重新sorting这样一个列表。 animation不完全如你所描述的,但希望它可以帮助你实现你想要的。

https://github.com/fabrantes/widgetexamples

stream程是这样的:

  1. notifyDataSetChanged()之前保存当前状态。 保存状态包括存储每个项目的getTop()坐标。
  2. notifyDataSetChange之后,遍历所有ListView视图,并应用具有新项目位置和旧位置之间高度差的TranslateAnimation。

我希望这是解决您的问题

  <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" />