Android-анимация не перерисовывается во время анимации - PullRequest
2 голосов
/ 13 февраля 2012

У меня есть активность с выдвижным ящиком, который появляется как меню. когда действие начинается, кнопка появляется и гаснет, чтобы обеспечить полноэкранный просмотр. при нажатии на кнопку в верхней части ящика (на данный момент она имеет альфа-значение 0), она должна снова появиться и всплывающее меню. при повторном нажатии меню сворачивается, и кнопка снова исчезает. для этого у меня есть следующий код в деятельности.

Начальное затухание работает как положено. Деятельность создана, и кнопка исчезает. когда я нажимаю кнопку, чтобы развернуть меню, кнопка не появляется, а когда я нажимаю ее снова, кнопка появляется и не исчезает. Странно то, что анимация на самом деле вызывается, и если я перемещаю прокрутки за выдвижным ящиком, в то время как анимация после вызова аниматина вызывается, анимация обычно продолжается до тех пор, пока я сохраняю движения на заднем плане. Если я перестану перемещать эти представления, анимация остановится с некоторым альфа-значением.

Почему первый функционирует нормально, а другие - нет? Как мне это исправить?

drawer = (SlidingDrawer) this.findViewById(R.id.slidingDrawer1);
    drawer.setOnDrawerCloseListener(new OnDrawerCloseListener(){

        public void onDrawerClosed() {
            doFadeOut();
        }       
    });
    drawer.setOnDrawerOpenListener(new OnDrawerOpenListener(){

        public void onDrawerOpened() {
            doFadeIn();             
        }           
    });


fadeOut = AnimationUtils.loadAnimation(this, R.anim.buttonfadeout);
    fadeOut.setFillAfter(true);
    fadeIn = AnimationUtils.loadAnimation(this, R.anim.buttonfadein);
    fadeIn.setFillAfter(true);
    doFadeOut(); //this is the end of onCreate and fades when the activity is created

и это методы в деятельности

public void doFadeOut(){
    fadeOut.reset();
    menuButton.clearAnimation();
    menuButton.startAnimation(fadeOut);
}

public void doFadeIn(){
    fadeIn.reset();
    menuButton.clearAnimation();
    menuButton.startAnimation(fadeIn);
}

1 Ответ

0 голосов
/ 29 августа 2013

Вы реализовали AnimationListener?

Вы можете использовать onAnimationEnd () . Там вы можете поместить другого слушателя, который будет вызывать другую альфа-анимацию, чтобы ваша кнопка исчезала при закрытии ящика.

Я узнал из своей работы с анимациями, что если у вас есть более одной анимации, вы всегда должны реализовывать AnimationListener, потому что Android не может самостоятельно решить, что делать со многими из них.

Ознакомьтесь с этой документацией для разработчиков Android:

Документация слушателя анимации

...