我在Android编程方面经验不足,所以我遇到了一个问题,我想要动画直到arraySize()。但循环只迭代一次。实际上我需要应用程序动画,其中每个应用程序在随意延迟时间后开始动画。为了更好地理解,我在这里发布我的详细代码。 我已经解决了这个问题2天以来找不到任何解决方案所以我决定在这里发帖。
@Override
public void onAnimationEnd(Animation animation) {
Animation cout = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.optimization);
fan_bg.setAnimation(cout);
animateprogress(mHoloCircularProgressBar);//b8=b7+1;
int remainder = ramOptimizeArrayList.size() / 8;
int b = 0;
for ( int i=0;i<= remainder;i++) {
b = b + 1;
top.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
top_left.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
top_right.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
left.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
right.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
bottom.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
bottom_left.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
b = b + 1;
bottom_right.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
Runnable runnable = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
top_right.startAnimation(top_left_anim);
}
});
}
};
Handler handler1 = new Handler();
handler1.postDelayed(runnable, 100);
Runnable runnable2 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
top.startAnimation(top_anim);
}
});
}
};
Handler handler3 = new Handler();
handler3.postDelayed(runnable2, 50);
Runnable runnable4 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
top_left.startAnimation(top_right_anim);
}
});
}
};
Handler handler4 = new Handler();
handler4.postDelayed(runnable4, 200);
Runnable runnable5 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
left.startAnimation(left_anim);
}
});
}
};
Handler handler5 = new Handler();
handler5.postDelayed(runnable5, 500);
Runnable runnable6 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
right.startAnimation(right_anim);
}
});
}
};
Handler handler6 = new Handler();
handler6.postDelayed(runnable6, 300);
Runnable runnable7 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
bottom_left.startAnimation(bottom_left_anim);
}
});
}
};
Handler handler7 = new Handler();
handler7.postDelayed(runnable7, 600);
Runnable runnable8 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
bottom.startAnimation(bottom_anim);
}
});
}
};
Handler handler8 = new Handler();
handler8.postDelayed(runnable8, 350);
Runnable runnable9 = new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
bottom_right.startAnimation(bottom_right_anim);
}
});
}
};
Handler handler9 = new Handler();
handler9.postDelayed(runnable9, 650);
}
/*top.startAnimation(top_anim);
top_left.startAnimation(top_right_anim);
left.startAnimation(left_anim);
right.startAnimation(right_anim);
bottom_left.startAnimation(bottom_left_anim);
bottom.startAnimation(bottom_anim);
bottom_right.startAnimation(bottom_right_anim);*/
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
答案 0 :(得分:0)
如果您想要iterate
到array size
,为什么要在loop
中使用余数。您已将余数值设置为:
int remainder = ramOptimizeArrayList.size() / 8;
由于remainder
为int,如果array size
为13
:
remainder = 13/8
,结果为1
,因为remainder
是integer
。
将for循环写为:
for ( int i=0;i<= ramOptimizeArrayList.size();i++) {
//rest of your code
}