Как применить анимацию к элементу всякий раз, когда он появляется в представлении реселлера? - PullRequest
0 голосов
/ 22 января 2020

Я хочу, чтобы анимация, указанная в layoutAnimation, работала каждый раз, когда какой-либо элемент появляется в моем представлении переработчика. В настоящее время следующая анимация работает как задумано и применяется при первом отображении представления. Однако после прокрутки внутри моего recycerview к элементу не применяется анимация - это нежелательно. Я хочу, чтобы к элементу применялась анимация каждый раз, когда он появляется на экране - независимо от того, был ли он переработан или нарисован в первый раз.

Не работает ли layoutAnimation таким образом? Это только для первоначального размещения макета внутри родительского элемента?

Мой элемент, который применяется к программе просмотра:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="200dp"
    android:layout_height="400dp"
    android:id="@+id/item_life_event_id"
    android:background="@color/colorAccent"
    android:layoutAnimation="@anim/animation">

    <TextView
            android:id="@+id/textViewEventTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:layout_margin="10dp"
            android:gravity="center_horizontal"
            android:textSize="18sp"/>

</LinearLayout>

анимация. xml

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/animation_small"
    android:animationOrder="normal"/>

animation_small. xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="0"
    android:fillAfter="true">

    <scale
        android:fromXScale="100%"
        android:fromYScale="100%"
        android:toXScale="50%"
        android:toYScale="50%"
        android:pivotX="50%"
        android:pivotY="50%"
        android:interpolator="@android:anim/decelerate_interpolator"
        />

</set>

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Вместо использования вышеприведенных макетов XML я добавил анимацию внутри адаптера для элемента в представлении реселлера следующим образом:

@Override
public void onViewAttachedToWindow(@NonNull MyHolder holder) {
    super.onViewAttachedToWindow(holder);
    Animation anim = AnimationUtils.loadAnimation(context, R.anim.my_animation);
    holder.itemView.startAnimation(anim);
}

@Override
public void onViewDetachedFromWindow(@NonNull MyHolder holder) {
    super.onViewDetachedFromWindow(holder);
    holder.itemView.clearAnimation();
}
0 голосов
/ 22 января 2020

Вы должны установить анимацию в своем обзоре рециркуляции, а не настройку элемента, используя приведенный ниже код:

res / anim / layout_animation. xml

<?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:animationOrder="normal"
    android:delay="5%" />

animation_small. xml

 <set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500">

<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"
    />

Теперь вы должны использовать это в своем обзоре переработчика.

<android.support.v7.widget.RecyclerView
            android:id="@+id/recView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layoutAnimation="@anim/layout_animation"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...