私は GridLayoutManager を備えた RecyclerView を持っています (lib v7 をサポートしています)。アダプターを更新し、notifyItemMoved を作成します。アイテムの元の位置が画面上にあり、目的の位置も画面上にある場合、「移動アニメーション」が再生されます。項目が画面外の位置 (位置 1000、またはビューポートから離れた位置) にあり、ビューポートに移動した場合、「フェードイン アニメーション」で表示されます。
supportsPredictiveItemAnimations() が true を返すという事実にもかかわらず、予測アイテム アニメーションが機能していないようです。私は何か間違ったことをしていますか?いくつかのメソッドをオーバーライドして有効にする必要がありますか?
RecyclerView のソースコードを読んでいたところ、dispatchLayout メソッドの javadoc に次のように書かれています。
- PERSISTENT ビューは移動されます ({@link ItemAnimator#animateMove(ViewHolder, int, int, int, int)})
- REMOVED ビューは削除されます ({@link ItemAnimator#animateRemove(ViewHolder)})
- ADDED ビューが追加されました ({@link ItemAnimator#animateAdd(ViewHolder)})
- DISAPPEARING ビューが画面外に移動されました
- APPEARING ビューが画面上で移動されます
それにもかかわらず、ItemAnimator は ADDED と APPEARING を区別しません。Predictife アニメーションを修正するか、少なくとも APPEARING アニメーションを「画面アニメーションの外から移動する」ように見せて、ADDED アニメーションをそのままにすることは可能ですか?