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);

天呐!

4

1 回答 1

2

布局动画,如文档“定义布局动画以在第一次布局 ViewGroup 时使用”中所述。所以这仅在您第一次显示视图时使用。

我最近做了类似的事情,不知道是不是最好的解决方案,但是可以在系统调用getView方法的时候在adapter中启动动画。重要的是不要在 getView 方法中创建动画对象,而是在适配器构造函数中创建一次,然后将相同的动画重用于您希望使用所需动画显示的视图。

如果您只想在新视图上显示动画,而不是创建一个标志来指示该视图是否已首次显示,并使用视图 ID 将视图与正确的标志相关联。

如果要控制何时触发动画,请在视图上使用 setAnimation 方法而不是 startAnimation。如果您想创建视图逐渐出现在屏幕上的效果,这很有用。

于 2012-08-18T16:32:42.640 回答