我一直试图找到一些关于此事的东西,但却无法找到我想要的东西。我的问题是,我只是想以更优雅的方式编写一段代码。
我们说我有这行代码:
reverse1 = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.reversefallletter);
reverse2 = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.reversefallletter);
reverse3 = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.reversefallletter);
reverse4 = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.reversefallletter);
无论如何我可以使用-for循环语句编写它,假设资源相同,看起来更清晰,更优雅?
答案 0 :(得分:2)
例如,您可以将Animation
个对象存储在一个数组而不是4个不同的变量中,然后您可以执行以下操作:
final Animation[] animations = new Animation[4];
for(int i = 0; i < animations.length; i++) {
animations[i] = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.reversefallletter);
}
当然,您也可以使用List
或其他Collection
。但是如果你需要4个不同的变量,那么没有使用反射就没有其他方法。
你也可以编写一个这样的辅助方法:
public static Animation[] loadAnimations(Context context, int count, int animationId) {
final Animation[] animations = new Animation[count];
for(int i = 0; i < count: i++) {
animations[i] = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.reversefallletter);
}
return animations;
}
有了它,你可以节省一些样板代码:
Animation[] animations = AnimationHelper.loadAnimations(getActivity(), 4, R.anim.reversefallletter);
答案 1 :(得分:1)
是的,您可以使用List或数组来完成。例如,使用list就像:
int nbAnimations = 4;
List<Animation> myAnimationsList = new ArrayList<Animation>(nbAnimations);
for (int i = 0; i < nbAnimations; i++) {
myAnimationsList.add(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.reversefallletter));
}