Jestem początkującym programistą Androida. Kiedy szukam animacji RecyclerView, znalazłem informacje o RecyclerView.ItemAnimator i ale nie mogę znaleźć żadnego samouczka, jak z niego korzystać. Przeczytałem ten Jak używać ItemAnimator w RecyclerView?. Ale nadal nic nie rozumiem.

Znalazłem dokumentację.

Domyślnie RecyclerView używa DefaultItemAnimator.

Jakiego typu animacji można oczekiwać od DefaultItemAnimator, jeśli używam RecyclerView?

Użyłem LayoutAnimation, kiedy należy używać RecyclerView.ItemAnimator?

1
Athira Reddy 21 listopad 2019, 12:32
1
Domyślny animator przedmiotu działa podczas aktualizowania RecycleView. Powiedzmy, kiedy usuniesz, dodasz lub zaktualizujesz. Na przykład animacja w Gmailu lub Wiadomościach po usunięciu.
 – 
sanjeev
21 listopad 2019, 12:51
Jeśli mam listę statyczną, to nie działa?
 – 
Athira Reddy
21 listopad 2019, 12:53
Możesz wprowadzić to w życie po załadowaniu RecyclerView.
 – 
sanjeev
21 listopad 2019, 12:55
Przepraszam. Jestem też słaby z angielskiego. czy mógłbyś podać mi więcej informacji. Co poprzez to masz na mysli?
 – 
Athira Reddy
21 listopad 2019, 12:58
W porządku. Prostym, ale wizualnie zrozumiałym sposobem byłoby odesłanie tej biblioteki github.com/wasabeef/recyclerview-animators. Tak działa animator przedmiotów.
 – 
sanjeev
21 listopad 2019, 13:04

2 odpowiedzi

Chcesz ożywić rzędy recyklingu. Użyj poniższej funkcji

 public void setFadeAnimation(View view) {
    AlphaAnimation anim = new AlphaAnimation(0.0f, 1.0f);
    anim.setDuration(1000);
    view.startAnimation(anim);
}

Teraz przejdź do klasy Adapter i wywołaj tę funkcję w ramach metody onBindViewHolder

setFadeAnimation(myViewHolder.itemView);

Ożywi twoje rzędy

0
Sanwal Singh 21 listopad 2019, 12:36
1
Dziękuję za Twoją odpowiedź. Ale chcę wiedzieć, do czego służy ItemAnimator? Kiedy stosować?
 – 
Athira Reddy
21 listopad 2019, 12:48

Możesz użyć dowolnego typu animacji, aby animować element widoku recyklera

enter image description here

Kroki wymagane do zbudowania następującego zachowania

  1. Zacznij od utworzenia pliku item_animation_fall_down.xml w res/anim/ i dodaj następujące elementy:

    <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:duration="@integer/anim_duration_medium">
    
        <translate
            android:fromYDelta="-20%"
            android:toYDelta="0"
            android:interpolator="@android:anim/decelerate_interpolator"
            />
    
        <alpha
            android:fromAlpha="0"
            android:toAlpha="1"
            android:interpolator="@android:anim/decelerate_interpolator"
            />
    
        <scale
            android:fromXScale="105%"
            android:fromYScale="105%"
            android:toXScale="100%"
            android:toYScale="100%"
            android:pivotX="50%"
            android:pivotY="50%"
            android:interpolator="@android:anim/decelerate_interpolator"
            />
    
    </set>
    
  2. Definiowanie LayoutAnimacji

Po zakończeniu animacji elementu nadszedł czas na zdefiniowanie animacji układu, która zastosuje animację elementu do każdego dziecka w układzie. Utwórz nowy plik o nazwie layout_animation_fall_down.xml w res/anim/ i dodaj następujące elementy:

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/item_animation_fall_down"
    android:delay="15%"
    android:animationOrder="normal"
    />
  1. Stosowanie animacji Layout

LayoutAnimation można zastosować zarówno programowo, jak i w formacie XML.

JAVA

int resId = R.anim.layout_animation_fall_down;
LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(ctx, resId);
recyclerview.setLayoutAnimation(animation);

XML

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"                                        
    android:layoutAnimation="@anim/layout_animation_fall_down"
    />

Więcej informacji znajdziesz tutaj

2
Jasurbek 21 listopad 2019, 15:42
Więc jaki jest pożytek z ItemAnimator? Kiedy stosować?
 – 
Athira Reddy
21 listopad 2019, 12:46
Możesz użyć ItemAnimator, aby zastosować domyślną animację lub utworzyć klasę, a następnie rozszerzyć ItemAnimator i zastosować żądaną animację, w końcu ustaw utworzoną klasę jako domyślną animację
 – 
Jasurbek
21 listopad 2019, 13:49