2012-11-15 2 views
17

私はListViewを入力する一連のデータ(ArrayList)でAndroid上で作業しています。私が並べ替えモードを変更する瞬間、私はアダプタにリンクされたデータを並べ替え、notifyOnDataChanged()を呼び出してリストを更新します。リストビューのデータをアニメートする

これは機能しますが、両方のデータセットに同じ項目が含まれているので、各項目を新しい位置(iOSなど)にアニメーションすることができます。

私はこれをどのようにアニメーション化するか考えていましたが、リストの下に表示されるすべてのアイテムを高さゼロにアニメートし、新しい位置で元のサイズに戻してアニメートすることにしました。これは、データ上に上に移動するすべてのアイテムが、アイテムがその上に消えると、実際にリスト内で上に移動することを可能にします。それがアイデアですが、実装方法を理解できません。

データは次のように表すことができる:

Set A | index | Set B 
------+-------+------ 
A  | 0  | B 
B  | 1  | A 
C  | 2  | C 
D  | 3  | F 
E  | 4  | G 
F  | 5  | E 
G  | 6  | D 

私はちょうどiOS版は、Androidのデフォルトで処理し、何かを探しています。これは難しいことではありません。

+2

私も本当にこれに興味があります。並べ替えだけでなく、アニメーションの追加/削除も可能です。 – goncalossilva

+0

あなたはこれを修正しましたか?私は解決策を知りたいですか? – Nevaeh

答えて

11

このようなリストの並べ替えをアニメーション化する小さな例を作った。あなたが描いたとおりのアニメーションではありませんが、あなたが望むものを達成するのに役立ちます。

https://github.com/fabrantes/widgetexamples

流れは次のようなものです:

  1. )(notifyDataSetChanged前に、現在の状態を保存します。状態を保存することは、各項目のgetTop()座標を格納することにある。
  2. notifyDataSetChangeの後、すべてのListViewビューを通過して、新しい項目位置と古い位置の高さの差を付けてTranslateAnimationを適用します。
+0

リストに追加/削除する方法は?それは再注文を混乱させるでしょうか? – goncalossilva

+0

これはListViewサブクラスの形式になっていて、追加/削除された項目をサポートしていれば本当に好きですが、ちょっと感謝しています:-) – goncalossilva

+0

追加/削除についてはわかりません。それをListViewサブクラスにするのは簡単なことです。前記サブクラスを作成し、必要な機能を内部に配置します。その後、notifyDataSetChangedをオーバーライドし、そこでそれらの関数を呼び出します(順序に注意してください)。 – fabrantes

3

私は、これはあなたの問題を解決

<ListView 
      android:id="@+id/listUniversal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layoutAnimation="@anim/controller"> 

     </ListView> 

anim.xmlであると思います

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
    android:animation="@anim/scale_1" 
    android:delay="50%" /> 

scale_1.xml

<scale 
    android:duration="200" 
    android:fromXScale="0.1" 
    android:fromYScale="0.1" 
    android:pivotX="10%" 
    android:pivotY="10%" 
    android:startOffset="100" 
    android:toXScale="1" 
    android:toYScale="1.0" /> 

+0

スケール要素に名前空間を追加して完成させてください! (xmlns:android = "http://schemas.android.com/apk/res/android")。 – Fer

+0

リストからアイテムを削除するアニメーションはどうですか?どうすればいい? – Fer

関連する問題