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

jum*_*r0k 3 animation android listview

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

Udi*_*nic 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(..)
Run Code Online (Sandbox Code Playgroud)

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

winManager.updateViewLayout(..);
Run Code Online (Sandbox Code Playgroud)

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

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

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

希望这可以帮助!