如何一个接一个地在不同的持续时间内为不同的对象集制作动画?
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" />
任何人都可以帮助我吗?
答案 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);