Заставить Imageview исчезнуть после анимации - PullRequest
0 голосов
/ 10 июня 2018

У меня есть метод, который создает анимацию для объекта ImageView с указанными параметрами:

public void animateMove(float x, float y, int milsecs)
{
    float origX = view.getX();
    float origY = view.getY();

    view.setVisibility(View.VISIBLE);

    Path linePath = new Path();
    linePath.lineTo(x, y);

    ObjectAnimator anim = ObjectAnimator.ofFloat(view, "translationX", "translationY", linePath);
    anim.setDuration(milsecs);
    anim.start();

    view.setVisibility(View.INVISIBLE); // this code is the problem
    view.setX(origX);
    view.setY(origY);

}

Однако, когда я вызываю метод setVisibility, чтобы сделать ImageView невидимым, он запускается одновременно санимация происходит, и поэтому на самом деле ничего не видно.Если я удалю этот фрагмент кода, я смогу видеть анимацию представления просто отлично.

Как можно заставить этот метод создавать анимацию и делать ее невидимой только ПОСЛЕ полной анимации?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Добавьте это к своему коду до anim.start():

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

        @Override
        public void onAnimationEnd(Animator animation) {
                    view.setVisibility(View.INVISIBLE);
                    view.setX(origX);
                    view.setY(origY);
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
        }
});
0 голосов
/ 10 июня 2018

Попробуйте использовать один из ObjectAnimator методов информации о состоянии, таких как isRunning() или isStarted()

if(anim.isStarted()) {
view.setVisibility(View.INVISIBLE);}
...