0

如何在不同的持续时间内为不同的对象集设置动画?

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" /> 

谁能帮我?

4

3 回答 3

1

您可以为第二个动画添加第一个动画应该花费的时间。请意识到这可能不足以满足您的需要,如果不是,那么您可能需要走AnimationListener的路线

home.startAnimation(alpha_anim);
alpha_anim.setStartOffset(8000);
settings.startAnimation(alpha_anim);
于 2012-06-26T08:25:28.443 回答
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);
    }
};
于 2012-06-26T08:54:25.067 回答
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);
于 2012-06-26T09:09:44.733 回答