Laggy LayoutAnimations в RecyclerView (GridRecyclerView) - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть GridRecyclerView внутри фрагмента. В действии я загружаю два фрагмента, один из которых фрагмент с GridRecyclerView. Я хотел добавить некоторые модные анимации на макет GridRecyclerView. Затем я обнаружил эту статью и использовал оттуда некоторый код.

Анимация выглядит довольно хорошо, но есть некоторые проблемы с производительностью. Иногда анимации немного запаздывают, но не знаю почему.

Адаптер - это стандартный RecyclerAdapter, там нет сложных вычислений.

            (...)

// I need this to calculate height of each cell
gridWrapper.postDelayed(() -> {
            RecyclerView gridRecyclerView = view.findViewById(R.id.recycler_view_grid);

            gridRecyclerView.setLayoutManager(
                    new GridLayoutManager(getActivity(), numberOfColumns) {
                        @Override
                        public boolean canScrollVertically() {
                            return false;
                        }
                    }
            );

            gridRecyclerView.scheduleLayoutAnimation();

            LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(getContext(), R.anim.grid_layout_animation);
            gridRecyclerView.setLayoutAnimation(animation);

            Adapter adapter = new Adapter(getContext(), list, cellHeight);
            gridRecyclerView.setAdapter(adapter);

            gridRecyclerView.addItemDecoration(
                    new GridRecyclerViewDecorator(
                            numberOfColumns, marginSize
                    )
            );
}, 500);

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridWrapper"
    style="@style/LayoutFillParentFull">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.capgemini.edge.capgeminiengagement.views.ui.GridRecyclerView
            android:id="@+id/recycler_view_grid"
            style="@style/LayoutFillParentFull"
            android:scrollbars="none" />

    </LinearLayout>
</LinearLayout>

анимации:

<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/home_card_animation_from_right"
    android:animationOrder="normal"
    android:columnDelay="15%"
    android:direction="left_to_right"
    android:rowDelay="0%" />
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="700"
    android:interpolator="@android:anim/anticipate_overshoot_interpolator">

    <translate
        android:fromXDelta="-100%p"
        android:toXDelta="0%p" />

</set>

Есть ли у вас какие-либо предположения о причинах проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...