Анимация расширения вниз item'а RecyclerView не работает

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2023

Хочу сделать, чтобы при клике на item он немного расширялся вниз. Использую RecyclerView со StaggeredGridLayoutManager.

   int h = (int) (rootLayout.getMeasuredHeight() / getResources().getDisplayMetrics().density);
                
                ValueAnimator anim = ValueAnimator.ofInt(h, h+48).setDuration(1500);

                anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(@NonNull ValueAnimator valueAnimator) {

                        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) rootLayout.getLayoutParams();
                        params.height += valueAnimator.getAnimatedFraction();
                        rootLayout.setLayoutParams(params);
                        
                    }
                });

                anim.start();

Но в итоге ничего не происходит. Вообще ничего...

Ответы

▲ 0Принят

✅ Я нашёл решение:

 StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) rootLayout.getLayoutParams();

                ValueAnimator anim = ValueAnimator.ofInt(params.height, params.height+72).setDuration(400);

                anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(@NonNull ValueAnimator valueAnimator) {

                        Log.i("info", "anim");

                        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) rootLayout.getLayoutParams();
                        params.height = (int) valueAnimator.getAnimatedValue();
                        rootLayout.setLayoutParams(params);
                        //timerRecycler.getAdapter().notifyItemChanged(position);

                    }
                });

                anim.start();