在 iOS 中,有一个非常简单且强大的工具可以对 UITableView 行的添加和删除进行动画处理,这是 YouTube 视频的剪辑显示默认动画。请注意周围的行如何折叠到已删除的行上。此动画可帮助用户跟踪列表中发生的更改以及数据更改时他们正在查看的列表中的位置。
自从我在 Android 上进行开发以来,我发现没有等效的工具可以为单个行添加动画效果。表格视图。呼唤notifyDataSetChanged()我的适配器上的 导致 ListView 立即用新信息更新其内容。我想展示一个简单的动画,显示数据更改时新行推入或滑出的动画,但我找不到任何记录的方法来执行此操作。看起来像布局动画控制器可能是让它发挥作用的关键,但是当我在 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 实现/分支,但这似乎不应该那么困难。
Thanks!