1

好的..我为一个小的图像视图设置了这个动画,用于在 XML 中从“0%”转换为“50%”......

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="400"
        android:fromXDelta="0%"        
        android:toXDelta="+50%" />    
</set>

在此之后,我需要添加另一个顺序动画,它将 Y 坐标从“0%”更改为“50%”。我尝试添加另一个<set>,但它不起作用...我应该怎么做才能获得顺序动画?

4

2 回答 2

2

您可以使用 android:startOffset 来延迟动画。Delay in milliseconds before the animation runs, once start time is reached. Must be an integer value, such as "100".--“开发者.android.com”

另一种方法是您可以使用 AnimationListener 来“收听”动画并做任何您想做的事情。

此链接对您很有用:如何按顺序运行多个翻译动画?

于 2012-12-28T08:36:36.363 回答
1

我不完全确定你真正想要做什么,但如果你想同时“翻译”“x”和“y”,只需将android:fromYDelta="0%"和添加android:toYDelta="+50%"到现有的<translate>.

如果您想在 X 之后“翻译”Y 值,您将需要一个新的 XML 文件,当 X 完成时您需要调用该文件。

一个快速的、未经测试的例子:

mAnimatedView = findViewById(R.id.viewToAnimate);

mAnimX = (TranslateAnimation) AnimationUtils.loadAnimation(mContext, R.anim.aX);
mAnimY = (TranslateAnimation) AnimationUtils.loadAnimation(mContext, R.anim.aY);

mAnimX.setAnimationListener(new AnimationListener(){
    @Override
    public void onAnimationEnd(Animation animation) {
        if (mAnimatedView) {
            mAnimatedView.startAnimation(mAnimY);
        }
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
    }
    @Override
    public void onAnimationStart(Animation animation) {
    }
}); 
mAnimY.setAnimationListener(new AnimationListener(){
    @Override
    public void onAnimationEnd(Animation animation) {
        if (mAnimatedView) {
            mAnimatedView.startAnimation(mAnimX);
        }
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
    }
    @Override
    public void onAnimationStart(Animation animation) {
    }
});

mAnimatedView.startAnimation(mAnimX);

希望有帮助并且足够清楚。

于 2012-12-28T08:47:59.043 回答