【问题标题】:How can I trigger a sequence of animations using asynchronous events?如何使用异步事件触发一系列动画?
【发布时间】:2017-11-14 17:41:00
【问题描述】:

我有一个包含处理异步消息的处理程序的活动。当我收到消息时,我想触发动画;之后,当我收到另一条消息时,我想触发另一个动画,但只有在最后一个动画完成后。

最干净的方法是什么?

【问题讨论】:

    标签: java android asynchronous android-animation


    【解决方案1】:

    您可以使用动画侦听器来确定动画何时结束。像这样的:

        Animation a = AnimationUtils.loadAnimation(this.getContext(), R.anim.animation);
    
        a.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
    
            }
    
            @Override
            public void onAnimationEnd(Animation animation) {
                if(receivedMessage == true){
                    startNextAnimation();
                }
            }
    
            @Override
            public void onAnimationRepeat(Animation animation) {
    
            }
        });
    

    【讨论】:

    • startNextAnimation() 应该如何选择下一个动画?例如,当我收到一条新消息时,我可以将动画放在阻塞队列中并从那里挑选它,但是,如果调用该方法时下一条消息还没有到达怎么办?我认为这行不通
    • 你可以创建一个监听器。 onMessageReceived() 并处理应该发生的事情的逻辑。在 onMessageReceived 中,您将设置“receivedMessage = true”。这将允许当前动画继续。如果动画已经完成,那么您知道在收到消息时开始下一个动画。 (如果没有动画发生,您可以跟踪动画并将其设置为 null)即: if (currentAnimation == null) startNewAnimation()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2021-12-24
    • 2019-12-21
    • 2015-07-06
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多