如何在android中播放多个视图的动画

时间:2012-08-25 15:08:51

标签: android animation android-animation

我想在android中播放一个包含多个视图的动画。 这是代码的简化示例。 此代码工作不正常。 每次startAnimation()调用都会影响所有以前的动画视图

请告诉我,为什么它不起作用以及如何正确使用它。

public SomeClass(){

private int currentViewID = 0; 
private View[] views = { view1, view2, view3, view4, view5 }
private Animation anim = AnimationUtils.loadAnimation(this.getContext(), android.R.anim.fade_out);

public SomeClass() {
    this.anim.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationEnd(Animation animation) {
            if (SomeClass.this.currentViewID != SomeClass.this.views.length) SomeClass.this.hideNextView();
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }

        @Override
        public void onAnimationStart(Animation animation) {

        }

    });
    this.hideNextView();
}

private void hideNextView() {
    this.views[this.currentViewID++].startAnimation(this.anim);
}

}

1 个答案:

答案 0 :(得分:0)

如果您不想处理班级中的许多动画(每个视图一个),您可以在本地执行操作:

private int currentViewID = 0; 
private View[] views = { view1, view2, view3, view4, view5 }

public SomeClass() {
    this.hideNextView();
}

private void hideNextView() {
    final Animation anim = AnimationUtils.loadAnimation(this.getContext(), android.R.anim.fade_out);

    anim.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationEnd(Animation animation) {
            if (SomeClass.this.currentViewID != SomeClass.this.views.length) SomeClass.this.hideNextView();
        }

        @Override
        public void onAnimationRepeat(Animation animation) {}

        @Override
        public void onAnimationStart(Animation animation) {}

    });

    this.views[this.currentViewID++].startAnimation(anim);
}