В 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 перейшло мені на думку, це здається чимось, що не повинно бути таким складним.
Дякую!