在iOS中,有一個非常簡單而強大的工具來動畫添加和刪除UITableView行,here's a clip from a youtube video顯示默認動畫。請注意周圍的行如何摺疊到刪除的行上。此動畫可幫助用戶跟蹤列表中更改的內容以及數據更改時他們正在查看的列表中的哪些內容。如何動態添加或刪除Android ListView行
由於我一直在Android上開發,我沒有發現在TableView中爲單個行設置動畫效果。在適配器上調用notifyDataSetChanged()
會導致ListView立即使用新信息更新其內容。我想在數據發生變化時顯示一個新行的簡單動畫推入或滑出,但我找不到任何記錄的方式來執行此操作。它看起來像LayoutAnimationController可能持有一個關鍵讓這個工作,但是當我在我的ListView上設置一個LayoutAnimationController(類似於ApiDemo's 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已經超越了我的想法,這似乎是應該不那麼難。
謝謝!
做了某人f對此的答案?謝謝 – AndroidGecko 2012-09-12 13:14:19
@Alex:你做了那樣的動畫像youtube視頻(如iPhone),如果你有任何演示或Android的鏈接,那麼請給我,我已經嘗試在xml文件中使用animateLayoutChanges,但它不完全像iphone – Jayesh 2014-11-17 13:57:28
@Jayesh,不幸的是我不再在Android開發上工作。我還沒有測試過2012年前後編寫的任何對這個問題的答案。 – 2014-11-18 16:44:01