Ustawianie android: animateLayoutChanges programowo

84

Tworzę linearLayouts programowo i chciałbym, aby pojawiały się i znikały, gdy widoczność jest ustawiona na widoczna / zniknęła.

Mogę ustawić

android:animateLayoutChanges="true" 

w pliku xml, ale ponieważ tworzę widoki programowo, muszę ustawić to programowo. Jak mogę to zrobić?

deimos1988
źródło

Odpowiedzi:

151

Użyj tego kodu:

container.setLayoutTransition(new LayoutTransition());

lub

LayoutTransition lt = new LayoutTransition();
lt.disableTransitionType(LayoutTransition.DISAPPEARING);
container.setLayoutTransition(lt);
user3709904
źródło
1
Dziękuję za komentarz, ale niestety disableTransitionType jest dostępne tylko od poziomu API 16, jednak używam poziomu API 15.
deimos1988
2
Jest to opcjonalne, możesz użyć po prostucontainer.setLayoutTransition(new LayoutTransition())
user3709904
2
Dobrze, ale jeśli chciałbym wyłączyć efekt zanikania, czy jest sposób na 15 poziom API?
deimos1988
3
Po co wyłączać znikające przejście?
Louis CAD
2
Aby to zrobić na poziomie API niższym niż 16, po prostu wyłącz Animatory dla tego typu przejść. Wspomina o tym dokumentacja: developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = cardsGroup.getLayoutTransition (); // wyłączanie pojawiających się / znikających przejść układu lt.setAnimator (LayoutTransition.APPEARING, null); lt.setAnimator (LayoutTransition.DISAPPEARING, null); lt.setAnimator (LayoutTransition.CHANGE_DISAPPEARING, null);
niebo
18

Aby wyłączyć efekt zanikania, spróbuj tego:

LinearLayout layout = (LinearLayout) findViewById(R.id.test_layout);
layout.setLayoutTransition(null);
Pion
źródło
2
To daje mi NullPointerException.
Srujan Barai
7
@SrujanBarai Wtedy nie ma widoku z identyfikatorem R.id. test_layoutw twoim układzie.
Paul Woitaschek