Intereting Posts
Как использовать viewGroup в android Измените цвет выделения выбранного элемента для меню меню жесткого меню Превышен лимит 64k ​​на более старых API, чем леденец, но не новый Установить 2 предупреждения о приближении с тем же широковещательным Может ли кто-нибудь уточнить ссылки на контекст Android? Firefox для Android не запускает приложение при нажатии ссылки Как получить MAC-адрес сетевого интерфейса WiFi? SIM-карта с двумя SIM-картами Android: нажатие кнопки ввода клавиатуры нажата Получение результата курсора и превращение его в строку для TextView Как использовать setContentView (int) из класса, который не расширяет Activity Могу ли я проверять обновления подписки на Google Play полностью на сервере? Отфильтровать сообщения журнала с помощью PID или пакета приложений в Android Как получить requestCode от ожидающего намерения во время тревоги в android Как уничтожить объект класса PhoneStateListener?

Как получить правильное расстояние прокрутки RecyclerView при использовании StaggeredGridLayoutManager?

Я создал представление заголовка, создав и ViewHolder уникальный ViewHolder в RecyclerView из-за специального вида вида. Заголовок полностью пуст, но он полный, и его высота очень хорошо рассчитана для следующих анимаций, когда пользователь прокручивает RecyclerView :

  • TextView переместится из центра заголовка в Toolbar и, наконец, «станет» его названием. Во время процесса TextView будет уменьшаться в соответствии с вертикальным смещением.
  • Другой TextView будет перемещаться вместе с первым TextView одновременно, но он не будет сокращаться. Вместо этого он изменит альфу и, наконец, станет прозрачным, когда первый TextView находится в правильном положении на Toolbar .

Чтобы реализовать их, мне нужно получить расстояние прокрутки RecyclerView чтобы я мог вычислять перевод или альфа.

Вот что я сделал сейчас:

 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { private int totalDy = 0; @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { totalDy -= dy; // setAlpha, setTranslationY and setScale here according to totalDy. } }); 

Он отлично работает, когда набор данных не изменяется. Однако, когда я прокручиваю вниз, вставляю / notifyItemInserted/Removed() любые элементы в / из адаптера и notifyItemInserted/Removed() , totalDy не будет точным. Например, когда я удалил элемент, totalDy больше не вернется 0.

В результате кажется, что использование totalDy для получения прокрутки RadyclerView не будет работать хорошо. Есть ли способы для разработчиков получить его?

УВЕДОМЛЕНИЕ. Я использую StaggeredGridLayoutManager и я чувствую, что он отличается от LinearLayoutManager .