Đặt android: animateLayoutChanges theo lập trình


82

Tôi đang tạo các tuyến tính theo chương trình và muốn chúng mờ dần đi khi khả năng hiển thị được đặt thành hiển thị / biến mất.

Tôi có thể đặt

android:animateLayoutChanges="true" 

trong tệp xml, nhưng vì tôi đang tạo chế độ xem theo chương trình, nên tôi cần đặt chế độ xem theo chương trình. Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


148

Sử dụng mã này:

container.setLayoutTransition(new LayoutTransition());

hoặc là

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

1
Cảm ơn bạn đã bình luận của bạn, nhưng tiếc là disableTransitionType chỉ có sẵn từ cấp API 16, tuy nhiên tôi đang sử dụng mức API 15.
deimos1988

2
Đó là tùy chọn, bạn có thể sử dụng đơn giảncontainer.setLayoutTransition(new LayoutTransition())
user3709904

2
Được rồi, nhưng nếu tôi muốn vô hiệu hóa hiệu ứng mờ dần, có cách nào cho API cấp 15 không?
deimos1988

3
Tại sao lại tắt tính năng chuyển đổi đang biến mất?
Louis CAD

2
Để thực hiện ở cấp api nhỏ hơn 16, chỉ cần vô hiệu hóa Animator cho các loại chuyển tiếp này. Điều này được đề cập trong tài liệu: developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = cardGroup.getLayoutTransition (); // tắt chuyển đổi bố cục xuất hiện / biến mất lt.setAnimator (LayoutTransition.APPEARING, null); lt.setAnimator (LayoutTransition.DISAPPEARING, null); lt.setAnimator (LayoutTransition.CHANGE_DISAPPEARING, null);
bầu trời

17

Để tắt hiệu ứng mờ dần, hãy thử cách này:

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

2
Điều này mang lại cho tôi NullPointerException.
Srujan Barai

7
@SrujanBarai Sau đó, không có chế độ xem với id R.id. test_layouttrong bố cục của bạn.
Paul Woitaschek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.