3

リストビューで新しいアイテムを追加したり、アイテムをある位置から別の位置に移動したりするにはどうすればよいですか?このアプリのように、アニメーション効果を作りたい:any.do(youtube)。ResourceCursorAdapterから拡張されたアダプターを使用しています。この効果を実現するには、newView関数とbindView関数をどのように使用する必要がありますか?または、ListViewクラスを拡張するなど、別の方法はありますか?any.doアプリにListviewの代わりにScrollViewがあるのではないかと思います。しかし、リストに多くのアイテムがある場合、これは間違った方法だと思います。何か案は?

4

1 に答える 1

5

その効果を行うには、次のことを行う必要があります。1.アイテムがあったスロットを「閉じる」。2.アイテムが「着陸」するリストのスロットを「開き」ます。3.アイテムをスロット間で移動します。

最初のアニメーションを実現するには、リストアイテムビュー自体をアニメーション化する必要があります。それを消すために、その下マージンの値をアニメートすることができます。Any.DOで行った他のアニメーションについてのブログ投稿を書きました。ここで、この値をアニメーション化しました-http: //udinic.wordpress.com/2011/09/03/expanding-listview-items/。同じアニメーションを使用して、リストアイテムのビューをアニメーション化できます。

「開く」アニメーションは閉じるのと同じですが、方向が逆です。「ランディングポイント」の直前に配置されたリストアイテムを取得し、その下マージンを外側にアニメーション化して、新しいアイテムが来るための空きスペースを作成します。

位置間でのアイテムの移動はかなり簡単です。リストアイテムと同じレイアウトでビューを膨らませ、現在のアイテムのデータを入力して、WindowManagerに追加する必要があります。

WindowManager winManager = (WindowManager) Context.getSystemService(Context.WINDOW_SERVICE);
winManager.addView(..)

次を使用して座標をアニメートします。

winManager.updateViewLayout(..);

アニメーションが終了したら、このビューを削除してリストを更新できます。

アイテムの追加アニメーションは、同じ概念を使用して実行されます。

申し訳ありませんが、ここで提供する完全なソースがありません。私のブログ投稿で、展開/閉じるアニメーションのコードを見つけることができます。

お役に立てれば!

于 2012-07-29T16:14:08.853 に答える