动画在列表视图中添加项目和项目移动

时间:2012-07-12 10:12:05

标签: android listview animation

如何在listview中动画添加新项目或将项目从一个位置移动到另一个位置?我想制作动画效果,就像在这个应用程序中:any.do(youtube)。我正在使用从ResourceCursorAdapter扩展的适配器。我应该如何使用newView和bindView函数来实现这种效果?或者有其他方法来做,比如扩展ListView类?我怀疑在any.do应用程序中有一个ScrollView而不是Listview。但我认为这是错误的方式,如果列表中有很多项目。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

要做到这一点,你需要: 1."关闭"项目曾经是的插槽。 2."打开"列表中的一个插槽,该项目将在#34; land"。 3.在插槽之间移动项目。

要实现第一个动画,您需要为列表项视图本身设置动画。为了使其消失,您可以设置其底部边距的值的动画。我写了一篇关于我在Any.DO中做过的其他动画的博客文章,在那里我给这个值添加了动画 - http://udinic.wordpress.com/2011/09/03/expanding-listview-items/。您可以使用相同的动画为列表项的视图设置动画。

"打开"动画与关闭相同,但方向相反。您将列表项目放置在"着陆点"之前,并向下调整其底部边距,为新项目创建一个空白空间。

在位置之间移动项目相当容易。您需要使用与列表项相同的布局来扩展视图,使用当前项的数据填充它,将其添加到WindowManager:

WindowManager winManager = (WindowManager) Context.getSystemService(Context.WINDOW_SERVICE);
winManager.addView(..)

使用以下方法为其坐标设置动画:

winManager.updateViewLayout(..);

动画完成后 - 您可以删除此视图并刷新列表。

使用相同的概念完成添加项目动画。

对不起,我在这里没有完整的资源。在我的博客文章中,您可以找到展开/关闭动画的代码。

希望这有帮助!