如何检测完成洛蒂动画并显示吐司

时间:2018-10-23 04:34:40

标签: android android-studio

我有这段代码可以显示动画,我想知道动画结束后如何显示Toast

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);

    lottieAnimationLogo = findViewById(R.id.lottieAnimationLogo);

    startCheckAnimationLogo();

}

private void startCheckAnimationLogo(){
    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f).setDuration(3000);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){
        @Override
        public void onAnimationUpdate(ValueAnimator animation){
            lottieAnimationLogo.setProgress((Float)animation.getAnimatedValue());
        }
    });
    if(lottieAnimationLogo.getProgress() == 0f){
        animator.start();
    }else{
        lottieAnimationLogo.setProgress(0f);
    }
}

1 个答案:

答案 0 :(得分:2)

您可以尝试设置AnimatorListener:

animator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            // show Toast
        }
    });

或为所有生命周期事件添加侦听器:

animator.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {

        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

编辑:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);

    lottieAnimationLogo = findViewById(R.id.lottieAnimationLogo);

    startCheckAnimationLogo();

}

private void startCheckAnimationLogo(){
    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f).setDuration(3000);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){
        @Override
        public void onAnimationUpdate(ValueAnimator animation){
 lottieAnimationLogo.setProgress((Float)animation.getAnimatedValue());
        }
    });
    animator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            Toast.makeText(this, "Text", Toast.LENGTH_SHORT).show();
        }
    });
    if(lottieAnimationLogo.getProgress() == 0f){
        animator.start();
    }else{
        lottieAnimationLogo.setProgress(0f);
    }
}