프로그래밍 방식으로 android : animateLayoutChanges 설정


84

프로그래밍 방식으로 linearLayouts를 만들고 있으며 가시성이 표시 / 사라짐으로 설정되면 페이드 인 및 페이드 아웃되기를 원합니다.

나는 설정할 수 있습니다

android:animateLayoutChanges="true" 

xml 파일에 있지만 프로그래밍 방식으로 뷰를 생성하므로 프로그래밍 방식으로 설정해야합니다. 어떻게 할 수 있습니까?

답변:


151

이 코드를 사용하십시오.

container.setLayoutTransition(new LayoutTransition());

또는

LayoutTransition lt = new LayoutTransition();
lt.disableTransitionType(LayoutTransition.DISAPPEARING);
container.setLayoutTransition(lt);

1
의견을 보내 주셔서 감사합니다.하지만 아쉽게도 disableTransitionType은 API 레벨 16에서만 사용할 수 있지만 API 레벨 15를 사용하고 있습니다.
deimos1988

2
선택 사항이며 간단하게 사용할 수 있습니다.container.setLayoutTransition(new LayoutTransition())
user3709904 2014-06-05

2
좋아,하지만 페이드 아웃 효과를 비활성화하려면 API 레벨 15에 대한 방법이 있습니까?
deimos1988

3
사라지는 전환을 비활성화하는 이유는 무엇입니까?
Louis CAD

2
16 미만의 API 레벨에서이를 수행하려면이 전환 유형에 대해 애니메이터를 비활성화하면됩니다. 이것은 문서에 언급되어 있습니다. developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = cardsGroup.getLayoutTransition (); // 나타나거나 사라지는 레이아웃 전환 비활성화 lt.setAnimator (LayoutTransition.APPEARING, null); lt.setAnimator (LayoutTransition.DISAPPEARING, null); lt.setAnimator (LayoutTransition.CHANGE_DISAPPEARING, null);
sky

18

페이드 아웃 효과를 비활성화하려면 다음을 시도하십시오.

LinearLayout layout = (LinearLayout) findViewById(R.id.test_layout);
layout.setLayoutTransition(null);

2
이것은 나에게 NullPointerException을 제공합니다.
Srujan Barai

7
@SrujanBarai 그러면 R.id. test_layout레이아웃에 ID가 있는 보기가 없습니다 .
Paul Woitaschek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.