В iOS есть очень простое и мощное средство для анимации добавления и удаления строк UITableView, вот клип из видео на YouTube, показывающий анимацию по умолчанию. Обратите внимание, как окружающие строки сворачиваются в удаленную строку. Эта анимация помогает пользователям отслеживать, что изменилось в списке и где они находились в списке при изменении данных.
Так как я разрабатывал для Android, я не нашел эквивалентного средства для анимации отдельных строк в TableView . При вызове notifyDataSetChanged()
моего адаптера ListView немедленно обновляет свое содержимое новой информацией. Я хотел бы показать простую анимацию новой строки, которая сдвигается или сдвигается при изменении данных, но я не могу найти никакого документированного способа сделать это. Похоже, что LayoutAnimationController может содержать ключ к тому, чтобы заставить это работать, но когда я устанавливаю LayoutAnimationController в моем ListView (аналогично LayoutAnimation2 в ApiDemo ) и удаляю элементы из моего адаптера после отображения списка, элементы сразу исчезают, а не выводятся из анимации. ,
Я также пробовал что-то вроде следующего, чтобы оживить отдельный элемент при его удалении:
@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 приходило мне в голову, это кажется чем-то, что не должно быть таким сложным.
Спасибо!