【问题标题】:animate adding item and item movement in listview在列表视图中添加项目和项目移动的动画
【发布时间】:2012-07-12 01:46:12
【问题描述】:
如何在列表视图中动画添加新项目或将项目从一个位置移动到另一个位置?我想制作动画效果,就像在这个应用程序中一样:any.do(youtube)。我正在使用从 ResourceCursorAdapter 扩展的适配器。我应该如何使用 newView 和 bindView 函数来实现这个效果?还是有其他方法可以做到这一点,比如扩展 ListView 类?我怀疑 any.do 应用程序中有一个 ScrollView 而不是 Listview。但我认为这是错误的方式,如果列表中有很多项目。有什么想法吗?
【问题讨论】:
标签:
android
listview
animation
【解决方案1】:
要实现该效果,您需要:
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(..);
动画完成后 - 您可以移除此视图并刷新列表。
添加项目动画是使用相同的概念完成的。
抱歉,这里没有完整的资源可提供。在我的博文中,您可以找到展开/关闭动画的代码。
希望这会有所帮助!