3

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

4

1 回答 1

5

要做到这一点,您需要: 1. “关闭”项目所在的插槽。2.在列表中“打开”一个插槽,该项目将“降落”。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(..);

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

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

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

希望这可以帮助!

于 2012-07-29T16:14:08.853 回答