Android:如何在不同的持续时间内为不同的对象制作动画?

时间:2012-06-26 08:16:22

标签: android android-animation

如何一个接一个地在不同的持续时间内为不同的对象集制作动画?

JAVA代码:

ImageButton home = (ImageButton)findViewById(R.id.homeicon);
ImageButton settings = (ImageButton)findViewById(R.id.settingsicon); 

Animation alpha_anim = AnimationUtils.loadAnimation(this, R.anim.alpha);
home.startAnimation(alpha_anim);
settings.startAnimation(alpha_anim);

动画文件:

<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0"
android:toAlpha="0.9"
android:duration="8000" /> 

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您可以为第二个动画添加延迟,以获得第一个动画所需的时间。请注意,这可能不足以满足您的需求,如果没有,那么您可能需要走AnimationListener的路线

home.startAnimation(alpha_anim);
alpha_anim.setStartOffset(8000);
settings.startAnimation(alpha_anim);

答案 1 :(得分:1)

我有一个屏幕,我需要为第一个布局设置动画,一旦完成,我想在第二个布局上开始动画。

所以我当时使用handler这样做,就像这样

Handler handler = new Handler(); // create Handler object
handler.post(homeRun);
Runnable homeRun = new Runnable() { // create runnable to start home anim
    public void run() {
        home.startAnimation(alpha_anim);
        handler.postDelayed(settingsRun, 1000); // start setting anim after the time the home takes to animate
    }
};

Runnable setingsRun = new Runnable() { // runnable to start settings anim
    public void run() {
        settings.startAnimation(alpha_anim);
    }
};

答案 2 :(得分:0)

如果要逐个执行,可以使用此代码。通过使用监听器,您可以确定动画已完成。

animation.setDuration(8000);
    animation.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationEnd(Animation animation) {
            animation.setDuration(6000);
                                 animation.setAnimationListener(null);
            settings.startAnimation(animation);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }

        @Override
        public void onAnimationStart(Animation animation) {
        }

    });
    home.startAnimation(alpha_anim);