在iOS中,有一个非常简单而强大的工具可以对UITableView行的添加和删除进行动画处理,这是一个来自youtube视频的剪辑,显示了默认动画。注意周围的行如何折叠到已删除的行上。此动画可帮助用户跟踪列表中的更改以及数据更改时用户在列表中的位置。
自从我在Android上进行开发以来,我发现没有等效的工具可以为TableView中的各个行设置动画。调用notifyDataSetChanged()
我的适配器会使ListView立即用新信息更新其内容。我想显示一个新的简单动画,当数据更改时,新行会推入或滑出,但是我找不到任何记录的方式来做到这一点。看起来LayoutAnimationController可能拥有使它起作用的关键,但是当我在ListView上设置LayoutAnimationController(类似于ApiDemo的LayoutAnimation2)并在列表显示后从适配器中删除元素时,这些元素会立即消失而不是动画化。
我还尝试了以下操作来为单个项目添加动画:
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
Animation animation = new ScaleAnimation(1, 1, 1, 0);
animation.setDuration(100);
getListView().getChildAt(position).startAnimation(animation);
l.postDelayed(new Runnable() {
public void run() {
mStringList.remove(position);
mAdapter.notifyDataSetChanged();
}
}, 100);
}
但是,动画行周围的行不会移动位置,直到它们在notifyDataSetChanged()
调用时跳到新位置为止。放置元素后,ListView似乎不会更新其布局。
在编写我自己的ListView的实现/分支时,我已经想到了,这似乎并不难。
谢谢!