Android 如何让动画在完成后再次工作?

Android 如何让动画在完成后再次工作?,android,animation,Android,Animation,在点击按钮时,我想让图像向下或向右移动。我遇到的问题是图像的移动只发生一次。在onClick()方法中,我只是调用我的move方法中的一个。以下是移动方法 private void moveLeftToRight() { animation = new TranslateAnimation(0.0f, 200.0f, 0.0f, 0.0f); animation.setDuration(1500); // animation duration animation.setF

在点击按钮时,我想让图像向下或向右移动。我遇到的问题是图像的移动只发生一次。在onClick()方法中,我只是调用我的move方法中的一个。以下是移动方法

private void moveLeftToRight() {
    animation = new TranslateAnimation(0.0f, 200.0f, 0.0f, 0.0f);
    animation.setDuration(1500); // animation duration
    animation.setFillAfter(true);
    iv1.startAnimation(animation); // start animation
}

private void moveUpToDown() {
    animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 200.0f);
    animation.setDuration(1500); // animation duration
    animation.setFillAfter(true);
    iv1.startAnimation(animation); // start animation
}

我可以第一次给他们中的任何一个打电话。此后,动画方法不起作用。我想知道我是否需要重置或做些什么。有什么想法吗?提前感谢。

当您将坐标传递给
TranslateAnimation
时,这些坐标是相对于0,0的,而不是视图坐标

为了解决这个问题,我们将使用
view.bottom
view.left
等获取视图坐标


然后将要转换的值添加到这些值中,将它们传递到
TranslateAnimation
,您的翻译将按预期工作

坐标是否传递给
TranslateAnimation()
相对坐标?如果他们不是,那就是为什么。他们不是亲戚。我只是在尝试在屏幕上移动图像。所以我只是向下或向右移动200像素。这是个问题吗?不过我想我明白你的意思。为了使图像从移动的位置继续,我必须设置一些坐标来映射图像的当前位置,以便它可以再次移动。正确吗?我怀疑在
moveLeftToRight()
中,您正在移动到坐标{0,200,0,0}(相对于{0,0}而不是视图),这意味着顺序调用会将视图动画化到完全相同的位置(因此不会移动)。要解决此问题,请获取视图坐标并添加值,然后将其传递到
TranslateAnimation
Yes!这正是我所看到的。我有一个误解,我认为(0,200,0,0)是像素运动,而不是坐标。如果这些是坐标,那么我所看到的和你所说的完全有道理。让我更正一下我的参数。@portfoliobuilder,这是我的荣幸和愉快的编码。