我有一个容器(gridlayout),其中放置了多个视图。当我单击这些视图中的任何一个时,应该应用无限动画(以指示它是选定/选定的视图)。
问题是我需要清除以前的动画,这样一次只能播放一个动画(对于单击的视图)。
我想有一个动画的全局定义,然后简单地取消它一次点击并分配一个新的视图给它,但是objectanimator没有方法取消它。
GridLayout container = (GridLayout) filterPackContainer.findViewById( R.id.container );
for( int f=0; f<10; f++ )
{
View child = that.getLayoutInflater().inflate( R.layout.child, null );
child.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
ObjectAnimator anim = ObjectAnimator.ofFloat( v, "alpha", .5f, 1f );
anim.setDuration( 1000 );
anim.setRepeatMode( 2 );
anim.setRepeatCount( 999999 );
anim.start();
}
});
container.addView( child );
}
然后我尝试将视图保存为引用,单击并使用Cyc动画()取消任何现有动画,但这没有效果,动画只是继续播放。
View vRef = null;
---------------------
GridLayout container = (GridLayout) filterPackContainer.findViewById( R.id.container );
for( int f=0; f<10; f++ )
{
View child = that.getLayoutInflater().inflate( R.layout.child, null );
child.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if( vRef != null )
vRef.clearAnimation();
vRef = v;
ObjectAnimator anim = ObjectAnimator.ofFloat( v, "alpha", .5f, 1f );
anim.setDuration( 1000 );
anim.setRepeatMode( 2 );
anim.setRepeatCount( 999999 );
anim.start();
}
});
container.addView( child );
}
关于如何正确处理这个问题有什么提示吗?谢谢!