0

私はギャラリーウィジェットを使用しています。ギャラリーの要素にフェードインするレイアウト アニメーションを添付しました。それはうまくいきます。

しかし、ギャラリーのコンテンツを変更し、notifyDataSetChanged(); でアダプターを更新すると、新しい要素が表示されますが、それらのレイアウト アニメーションはありません。

その効果をどのように実装しますか?ギャラリーのコンテンツを頻繁に更新するので、毎回その効果が必要です。

コードは次のとおりです。

 <com.rtrk.gui.mainmenu.gallery.A4TVGallery
    android:id="@+id/mainMenuGallery"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:layoutAnimation="@anim/a4tv_gallery_controller"
    android:persistentDrawingCache="animation" />


// Notify new data
mainMenuAdapter.notifyDataSetChanged();

// Set default selection

mainMenuGallery.setSelection(defaultSelectedIndex);

TNX!

4

1 に答える 1

2

ドキュメント「ViewGroupが最初にレイアウトされるときに使用するレイアウトアニメーションを定義する」で説明されているレイアウトアニメーション。したがって、これはビューを初めて表示するときにのみ使用されます。

最近、似たようなことをしました。それが最善の解決策かどうかはわかりませんが、システムがgetViewメソッドを呼び出すと、アダプターでアニメーションを開始できます。重要なのは、getViewメソッドでアニメーションオブジェクトを作成するのではなく、アダプターコンストラクターで一度だけ作成してから、目的のアニメーションで表示するビューに同じアニメーションを再利用することです。

新しいビューにのみアニメーションを表示する場合は、ビューが初めて表示されたかどうかを示すフラグを作成し、ビューIDを使用してビューを正しいフラグに関連付けます。

アニメーションがいつ起動されるかを制御する場合は、startAnimationではなくビューでsetAnimationメソッドを使用します。ビューが画面に徐々に表示されるような効果を作成する場合に便利です。

于 2012-08-18T16:32:42.640 に答える