2013-05-28 2 views
0

Есть ли какая-нибудь идея или как я могу достичь этой анимации, как следующая картина? потому что я попытался дать анимацию в Linringayout B, когда я нажал кнопку отмены, линейная линейка B будет выдвигаться слева направо, но после того, как LinearLayout B полностью исчезнет, ​​LinearLayout C начнет делать шаг ниже LinearLayout A, а не медленно перемещаться вниз из LinearLayout А. помогите пожалуйста ...Android: анимация слайдов до нижнего уровня другого вида.

Slide Animation

+0

Вы хотите только свернуть анимацию? – TheFlash

ответ

2

Set android:animateLayoutChanges="true" линейной компоновки и вы добьетесь это автоматически.

+0

Какой Линейный Layout вы упоминаете? B или C? – NaiveBz

+0

Тот, который содержит все линейные макеты. – bogdan

+0

ya эта работа, спасибо .. это то, что работа для элемента списка также прокручивается? – NaiveBz

0

Сначала добавьте слушателя ViewTreeObserver.OnPreDraw к виду C:

int bHeight = viewB.getHeight(); 
viewC.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
    public boolean onPreDraw() { 
     viewC.startAnimation(new TranslateAnimation(0, 0, bHeight, 0)); 
     viewC.getViewTreeObserver().removeOnPreDrawListener(this); 
     return false; 
    } 
}); 

Затем установите видимость B, чтобы ушел.

viewB.setVisibility(View.GONE); 

То, что это делает, скрывает вид B, заставляя вид C двигаться вверх. Однако до того, как C будет нарисован в новой позиции, мы анимируем ее там, где она была раньше.

+0

Я попытался, кажется, не работает для меня, тип возвращаемого значения должен установить false right? это работа для listview? потому что вещь, которую я собираюсь сделать, это заголовок listview. основываясь на вопросе, который я задаю, ответ bogdan работает нормально. Но для элемента listview он все же наступает прямо перед тем, как downlayout C сдвинется вверх. – NaiveBz

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