Как сделать анимацию в представлениях в Android? - PullRequest
1 голос
/ 07 марта 2012

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

Вот то, что я ищу

рис. 1 (до нажатия кнопки 1)

============================
|       view1              |
============================
| button 1 |
============

рис. 2 (после нажатия кнопки 1)

============================
|       view1              |
============================
|                          | 
|       view 2             |
|                          |
============================
| button 1 |
============

Как вы можете видеть, я хочу показать и скрыть view2 при нажатии на кнопку 1.

Мне удалосьсделать это с помощью следующего кода.Чтобы скрыть:

TranslateAnimation slide = new TranslateAnimation(0, 0,0,-200);
slide.setDuration(1000);
slide.setFillAfter(true);
view2.startAnimation(slide);
view2.setVisibility(View.GONE);

Показать:

TranslateAnimation slide = new TranslateAnimation(0, 0,-200,0);
slide.setDuration(1000);
slide.setFillAfter(true);
view2.startAnimation(slide);
view2.setVisibility(View.VISIBLE);

Это работает нормально, но единственная проблема в коде состоит в том, что код «Унесенные» и «Видимый» завершается доанимация завершена.т.е. кнопка 1 перемещается вниз при нажатии, чтобы показать, и анимация завершена позже.то же самое происходит для скрытия, кнопка 1 перемещается вверх перед анимацией, если она завершена.

Я хочу переместить кнопку вместе с анимацией.

Ответы [ 2 ]

2 голосов
/ 30 ноября 2012

Попробуйте этот код: ExpandAnimationExample из GitHub.У меня была такая же проблема, и этот пример решил мою проблему - возможно, она вам тоже поможет.

1 голос
/ 07 марта 2012

анимация имеет метод setAnimationListener (AnimationListener). AnimationListener имеет обратный вызов дерева

  1. onAnimationStart
  2. onAnimationRepeat
  3. onAnimationEnd

вы можете изменить видимость при вызове onAnimationEnd.

Например:

slide.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
                              // here you can change the visibility
        }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...