2012-03-07 2 views
1

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

Вот что я ищу

рис 1 (до кнопки 1 щёлкнули)

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

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

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

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

Мне удалось это сделать t он следит за кодом. Чтобы скрыть:

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» перемещается вниз при нажатии, чтобы показать, и анимация завершается позже. то же самое происходит для hide, кнопка «1» перемещается вверх до анимации, если она завершена.

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

ответ

1

анимация имеет метод setAnimationListener (AnimationListener). AnimationListener имеет дерево CallBack

  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 
     } 
); 
+0

Прошу прощения ... Я пробовал это ... Но он не работает так, как я хочу. Я хочу сдвинуть кнопку вместе с видом анимации. ваше решение удерживает кнопку на своем месте, а затем покажет ее в конце анимации – Nik

+0

, назовите yourbutton.layout() в onAnimationEnd(), чтобы поместить ее, как хотите. – Blackbelt

2

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

Смежные вопросы