我正在使用多个动画并一个接一个地播放动画。目前使用onAnimationEnd()一个接一个地播放动画。在onTouch的情况下,我需要停止动画,并需要在触摸位置设置不同的位图到imageview。目前使用下面的代码,但遇到clearAnimation()的问题。
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_UP:
imageArray[g_animCount - 1].clearAnimation();
break;
default:
break;
}
return true; // indicate event was handled
}
@Override
public void onAnimationEnd(Animation animation) {
layout.removeView(imageArray[g_animCount - 1]);
if ( (g_animCount < count))
{
startNextAnimation();
}
else
{
g_animCount = 0;
isBegin = false;
}
}
清晰动画后,我可以在开始位置再次看到图像,如何将其保持在触摸位置?试过setFillAfter(true)但没用。
如何定义onAnimationEnd()以便一个接一个地播放动画?我们需要删除imageview吗?
没有clearAnimation()我没有任何问题,但它没有解决我的问题。请更正我的代码。
答案 0 :(得分:0)
1)要将ImageView保持在新位置,您必须指定新坐标。 你可以这样做:
MarginLayoutParams l = new MarginLayoutParams(v.getLayoutParams());
l.leftMargin = left;
l.topMargin = top;
v.setLayoutParams(l);
v是你的ImageView,左边和上边是将视图放在屏幕上的坐标(x,y)。父亲应该是RelativeLayout。
2)最好按顺序启动所有动画,避免在回调方法中调用new start(onAnimationEnd等)。如果您必须稍后在流程中使用它,则无需删除视图
答案 1 :(得分:0)
我的回复可能有些过时,但比以后更好。
我也注意到了这个讨厌的错误:当你拨打cancelAnimation
时,会调用AnimationListener.onAnimationEnd
,但视图会保留,并且没有“合法”方法可以隐藏它(尝试从布局中移除视图,将可见性设置为View.INVISIBLE
,甚至为负marginTop
和marginBottom
- 无效。 Andoid 2.3和Android 4.0都存在这个漏洞。它没有出现KitKat,大概已被修复。
这是个好消息。我找到了ImageView
的解决方法:AnimationListener.onAnimationEnd
我说animationView.setImageDrawable(null)
,视图消失了。希望这会对某人有所帮助。