1

API DEMOS の例 2 のリストビュー アニメーションを使用しています。OnCreate メソッドのスニペットは次のとおりです。

ListView listview = (ListView) findViewById(android.R.id.list);

AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(50);
set.addAnimation(animation);

animation = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
    Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);

animation.setDuration(200);
set.addAnimation(animation);

LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);
listview.setLayoutAnimation(controller);

将来のある時点で、notifyDataSetInvalidated()リストのアダプターで呼び出され、リストが更新されます。しかし、アイテムはアニメーションで表示されなくなりました。

助けてください。

4

2 に答える 2

3

データセットの変更後に LayoutController を再アニメーション化する場合は、ビューのメソッドstartLayoutAnimation()を呼び出します。

于 2011-06-16T13:04:49.950 に答える
0

notifyDataSetChanged() と notifyDataSetInvalidated() の違いについては、このスレッドを確認してください( Romain Guy の回答を指すようにリンクが更新されました!)

要するに、違いは次のとおりです。

  • notifyDataSetChanged: データ セット内の項目が変更されました (追加、削除、更新、並べ替えなど)。
  • notifyDataSetInvalidated: アダプタのデータ ソースは使用できなくなりました。

ここでは、使用中の機能を含む実用的なサンプルを見つけることができますnotifyDataSetInvalidated。おそらく、アニメーションの問題でもうまくいくでしょう。

于 2011-04-15T17:39:22.030 に答える