我有一个容器(GridLayout),在其中放置了多个视图。当我单击这些视图中的任何一个时,应应用一个无限的动画(以表明它是选定/选择的视图)。
问题是我需要清除以前的动画,因此一次(针对单击的视图)一次只播放一个动画。
我当时想对动画进行全局定义,然后在onClick上取消动画并为其分配一个新的View,但是ObjectAnimator没有取消动画的方法。
PooledByteBufAllocator.DEFAULT
然后,我尝试将View保存为引用inClick,并使用clearAnimation()取消所有现有动画,但这没有效果,并且动画一直在播放。
ByteBuf
有关如何正确处理此问题的任何提示?谢谢!
答案 0 :(得分:1)
您可以使用AnimatorSet来控制动画。此类按指定顺序播放一组Animator对象。可以将动画设置为一起播放,按顺序播放或在指定的延迟后播放。
有两种方法可以将动画添加到AnimatorSet中:可以调用playTogether()或playSequentially()方法来一次添加一组动画,或者可以将play(Animator)与Builder类中的方法来逐个添加动画。
AnimatorSet animatorSet = new AnimatorSet();
child.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
if(animatorSet.isRunning)
animatorSet.cancel();
ObjectAnimator anim = ObjectAnimator.ofFloat( v, "alpha", .5f, 1f );
anim.setDuration( 1000 );
anim.setRepeatMode( 2 );
anim.setRepeatCount( 999999 );
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(anim);
animatorSet.start();
}
});
希望这会有所帮助。