我有一个GridView
,当按下按钮时,我希望所有元素一次淡出一个(或者淡入,如果它们已经不可见)。在淡入淡出时,我有:
Animation fadeIn = AnimationUtils.loadAnimation(activity, R.anim.fade_in);
LayoutAnimationController layoutAnimationController = new LayoutAnimationController(fadeIn);
gridView.setLayoutAnimation(layoutAnimationController);
gridView.setVisibility(View.VISIBLE);
按预期工作。GridView 中的每个视图一次淡入一个,然后整个 GridView 可见。在淡出端,我虽然类似的东西可能会起作用:
Animation fadeOut = AnimationUtils.loadAnimation(activity, R.anim.fade_out);
LayoutAnimationController layoutAnimationController = new LayoutAnimationController(fadeOut);
gridView.setLayoutAnimation(layoutAnimationController);
gridView.setVisibility(View.INVISIBLE);
但是,这只会使 GridView 立即消失,没有动画发生,它只是变得不可见。为什么是这样?我想我看到了一种扩展方法,LayoutAnimationController
其中我可以指定动画后的可见性,但是有没有更简单的方法来获得我想要的淡出效果?
编辑:所以基本上,当每个视图都使用特定动画进行动画处理时,我希望它将状态更改为可见或不可见,我想如果 GridView 的全部内容都是不可见的,我并不真正关心 GridView 本身是不可见的. 出于某种原因,这是我在fadeIn 上得到的确切行为,但在fadeOut 上,事情并不那么好,我猜fadeIn 的工作只是一个愚蠢的巧合,实际上有更好的方法来做到这一点。
我意识到一种方法是为屏幕上可见的每个视图手动编写所有动画,但如果这可以通过 LayoutAnimationController 实现,那显然要好得多。
编辑:我的问题的要点:onButtonPressed,我希望 GridView 中的视图一次淡出一个,并且整个 GridView 在动画结束时不可见。