【发布时间】:2011-12-18 19:27:36
【问题描述】:
我有一个带有几个按钮的简单应用程序。 在某些时候,动画会成功地按顺序应用于这些按钮。 但是,在所有动画按钮都是唯一的情况下(IE 按钮 1、2、3)一切正常。
另一方面,如果要设置动画的按钮是重复的(IE 1、1、2、3、2),那么即使 i 使用不同时间的 animation.SetStatOffset,相同按钮的动画也会同时开始(以秒为单位)。
public void Flash(int delay,int time) {
Animation animation=AnimationUtils.loadAnimation(this.getContext(),R.anim.gametextbuttonrotation);
animation.setStartOffset(delay);
animation.setDuration(time);
this.startAnimation(animation);
}
被调用
private void Flash(List<Integer> sequence)
{
int i=0;
int COOLDOWN=1000;
for (Integer integer : sequence) {
buttons[integer].Flash(i++*COOLDOWN,COOLDOWN/2);
}
}
我试图阅读 cod/google 但没有任何帮助。
好的,如果有人尝试这样做,解决方案如下:
1) 在View Class中创建AnimationSet的局部变量 2)开始一个新序列时,使用构造函数初始化AnimationSet(AFAIK没有AnimationSet.empty()之类的东西..... 3)在foreach循环中,创建动画然后播放它们
private void flash(List<Integer> sequence)
{
int i=0;
int COOLDOWN=1000;
for(Button button : buttons)
{
button.clearAnimation();
button.animSet=new AnimationSet(); //is inside a private method, here All-in-1 to be simple
}
for (Integer integer : sequence) {
buttons[integer].addFlash(i++*COOLDOWN,COOLDOWN/2);
}
for (Integer integer : sequence) {
buttons[integer].flash();
}
}
【问题讨论】:
-
好的,这很奇怪,但在发布后我得到了一个关联:D 我首先想到的是,startAnimation(...) 正在将动画添加到允许超过 1 个的按钮,但它似乎重写了他们.... 解决方法:在类AnimationSet中加入animSet; . . .动画动画=AnimationUtils.loadAnimation(this.getContext(),R.anim.gametextbuttonrotation);动画.setStartOffset(延迟);动画.setDuration(时间); animSet.addAnimation(动画); this.startAnimation(animSet);
-
我也给你写了一个很好的解释:-)
标签: android animation sequence