android顺序补间动画

时间:2012-12-28 08:22:40

标签: android

好的..我为这个动画设置了一个小的imageview,用于在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>但它不起作用...我该怎么做才能获得连续动画?

2 个答案:

答案 0 :(得分:2)

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

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

此链接对您有用:How to run several translate animations sequentially?

答案 1 :(得分: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);

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