Тема: Приховання елементів, котрі вийшли за екран
Прів.
Є контейнер в котрому збираються елементи при їх створенні. Це контейнер розширються вгору, по мірі поступання нових елементів.
Ми можемо скролити цей контейнер, аби почати ті елементи, що вийшли за межі екрану.
Необхідно приховувати ті елементи, котрі вийшли за межі екрану, але якщо ми скролимо, то елементи, котрі знову попадають на екран, повинні показуватись.
Зараз в мене є наступний алгоритм:
- при створенні елементу додаємо його в список
- під час скролення перебираємо кожен елемент списку і перевіряємо його на наявність в області екрану
- задля оптимізації ставимо заборону на перевірку елементів частіше ніж в 1/4 секунди
Проблема в том, що чим більше елементів, тим більше операції необхідно робити, при цьому, якщо ми скролимо без зупинки, то в секунду отримуємо
4*кількість елементів
перевірок, а сама перевірка містить перетворення координат з одної системи в іншу, і порівняння одних координат з іншими.
При цьому, якщо ми дивимось на низ списку і починаємо скролити, то перевірка починається з першого елементу, котрий далеко вгорі, і тому ми можемо побачити прогалини в елементах зверху екрану, тому що ми вже проскрорили до верху, але до цих елементів ще не дійшла черга.
Ну ви зрозуміли?
ось вам картинка, аби зрозуміліше було.
білий прямокутник - екран
зелений - контейнер
червоні прямокутники - елементи
Які є варіанти оптимізувати це?
p.s. всі елементи різної висоти