视图动画队列



我在页面上有一些Views。有必要在前一个之后进行每个动画处理。

1(我认为每个动画都会延迟,但在我看来,此选项不正确。

2( 对于 onAnimationEnd() 方法中Listener中的每个动画,我调用下一个动画。我从xml那里获取动画.在这个决定中,我注意到下一个动画不会立即起作用。而且我有一个 8-10 Views,让每个人都实施Listener,它也以某种方式不能干净地工作。

只有 3 Views ,它占用了如此多的空间:

mLogo.startAnimation(zoomInAnim);
    zoomInAnim.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
        }
        @Override
        public void onAnimationEnd(Animation animation) {
            mPackage.setVisibility(View.VISIBLE);
            mPackageBack.setVisibility(View.VISIBLE);
            mPackage.startAnimation(slideUpAnim);
            mPackageBack.startAnimation(slideUpAnim);
            slideUpAnim.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }
                @Override
                public void onAnimationEnd(Animation animation) {
                    mImage1.setVisibility(View.VISIBLE);
                    mImage1.startAnimation(slideUpBounceAnim);
                }
                @Override
                public void onAnimationRepeat(Animation animation) {
                }
            });
        }
        @Override
        public void onAnimationRepeat(Animation animation) {
        }
    });
}

:你如何将Views和动画队列结合起来,也许还有其他我不知道的解决方案?

如果您的动画具有相同的长度,您可以尝试这样的事情:

ArrayList<View> views = new ArrayList<>(3);
int delay = 0;
for(View view : views){
    view.animatate....setStartDelay(delay);
    delay += 1000;
}

您的动画没有理由不立即开始 我编写了一个自定义数字微调器视图,它得到一个像 1000 这样的数字,使用这种方法从 0 到 1000 例如,使用 2000 个动画没有延迟。检查您的动画并确保它们没问题,没有延迟和您定义和忘记的 xml 的开始。如果你想确保这是你的动画和资源的问题,只需使用:

https://github.com/daimajia/AndroidViewAnimations

默认情况下,它包含所有动画,只需选择几个并对其进行测试即可。

最新更新