我有一个listView
,它有一个布局动画,每次淡出每个项目。
lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.listview_2), 0.25f);
listOptions.setLayoutAnimation(lac);
listOptions.setLayoutAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
当用户选择一个项目时,listView
显示一组新的项目-每个项目一次淡出一个。然而,如果当用户选择一个项目时,项目的淡入动画还没有完成,并导致一组新项目淡入,那么这些动画会重叠,当新项目淡入时,可以看到以前的项目。看起来像ListView
上的闪烁故障。
onItemClick()
,即使我调用listView.getLayoutAnimation.getAnimation().cancel();
,我仍然得到相同的闪烁问题。我也试过listView.clearAnimation();
,仍然不起作用。我也试过:listView.setLayoutAnimation(null);
和重置。还是没用。
我似乎无法停止或取消动画!所有我想做的是,onItemclick()
在我的listView
中,停止动画或清空/清除listView
,然后将新项目重新加载到listView中,并使用动画将它们淡出,没有重叠-因此-没有闪烁故障。
我不想在动画完成之前禁用listView
,然后重新启用,因为它可能会产生尴尬的长等待时间。
ListViews中的动画具有挑战性,这也是Google发布RecyclerView的原因之一。然而,这个视频可能会为您提供一些如何为您工作的线索:https://www.youtube.com/watch?v=8MIfSxgsHIs