动画设置与for循环

时间:2014-07-29 14:50:18

标签: android animation android-animation

我一直试图找到一些关于此事的东西,但却无法找到我想要的东西。我的问题是,我只是想以更优雅的方式编写一段代码。

我们说我有这行代码:

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循环语句编写它,假设资源相同,看起来更清晰,更优雅?

2 个答案:

答案 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));
}