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