У меня есть 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>
Есть ли у вас какие-либо предположения о причинах проблема?