Перейти к содержанию
Fire Monkey от А до Я
  • 0

Динамическая подгрузка картинок в ListView


Вопрос

  • Модераторы

Привет Всем!

Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.

я взял картинки пользователей этого форума

2016-01-14 12-54-32 Form16.png

Seattle LVdynamicLoadBitmap.zip

Berlin LVdynamicLoadBitmap(Berlin).zip

Изменено пользователем ZuBy
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

классно! еще бы сделал что бы при пропадании видимости на итеме картинка вычищалась что бы память не занимала, вообще было бы замечательно :)

это не правильно, ListView итак отрисовывает только начиная с верхнего видимого Item'a.

ListView можно еще оптимизировать, т.к. он не правильно определяет кол-во видимых элементов.

 

Сейчас у него сделано так

от ПервогоВидимого до КонцаСписка 

а можно сделать так как у меня

от ПервогоВидимого до ПервогоВидимого+КоличествоВидимых

Думаю будет прирост скорости в отрисовке, если много Элементов в списке

Ссылка на комментарий
  • 0

Я не о том. Например есть 1000 итемов, у каждого картинка по 20 кбайт, в памяти она хранится как несжатый массив байтов и может расжиреть до 100 кбайт на картинку. Получается только под картинки сожрется 100 мбайт памяти. Короче говоря, у меня после вывода 100 картинок начинаются глюки. Картинки чернеют, надписи на итемах превращаются в снег. Как сокращаю до 50 сразу все нормально. Как то так. Я на это наткнулся на стандартном варианте работы с картинками.

Ссылка на комментарий
  • 0
  • Модераторы

Я не о том. Например есть 1000 итемов, у каждого картинка по 20 кбайт, в памяти она хранится как несжатый массив байтов и может расжиреть до 100 кбайт на картинку. Получается только под картинки сожрется 100 мбайт памяти. Короче говоря, у меня после вывода 100 картинок начинаются глюки. Картинки чернеют, надписи на итемах превращаются в снег. Как сокращаю до 50 сразу все нормально. Как то так. Я на это наткнулся на стандартном варианте работы с картинками.

если каждый раз выгружать на невидимых, то где хранить bitmap'ы?

каждый раз качать с инета не вариант, грузить с устройства тоже.

думаю ничего хорошего из этого не выйдет

Ссылка на комментарий
  • 0
  • Модераторы

кэш в папку

Это будет ужасно тормозить, вот прям ужасно. Тестировали правда на другом компоненте, но также загрузка картинок из Кеша во время отрисовки...

Ссылка на комментарий
  • 0

ну и пускай тормозит :) не обязательно что бы сразу появлялась. время будет подумаю над реализацией. но замысел такой. в итем добавлять картинку когда он еще например за 10 итемов до показа и удалять картинку если он уже после 10 итема показа. добавлять картинку можно через поток. правда работа с картинками обязательно должна быть синхронизированна с основным, но все равно. и даже если пользователь на какое то время увидит белый квадрат а потом в нем картинку, ничего страшного не произойдет. за то не будет лишнего жора памяти на портативных устройствах. на компе конечно все красиво и память можно не экономить. а вот на андроиде даже с гигом памяти уже нужна экономия, так как в памяти сидит не только твоя программ но и куча других а свопа подкачки нет. да и на андроиде веселый эффект с рассыпающимися надписями на пиксели и снегом вместо картинок не очень как то смотрится. 

Ссылка на комментарий
  • 0

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

Ссылка на комментарий
  • 0

я про таски а не про потоки. в тасках нет этой функци. 

и насчет OnTerminate - я так же заметил не здоровую фигню - создание 10-20 потоков очень сильно затормаживет основную систему. именно создание. никакой плавности нет при прокрутке. так что лучше это делать внутри потока а не снаружи. хотя если потоков один или два то как выход. 

Ссылка на комментарий
  • 0

поток разделяет время ОС

в один момент на одном ядре один поток

соответственно, 20 потоков на 2 ядрах организуют очередь в 10 штук на ядро

вот и не надо столько делать))

Ссылка на комментарий
  • 0
5 часов назад, ZuBy сказал:

это миллион раз обсуждалось, привет хелперам

ссылка на обсуждения?

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

 

да и кстати в том же примере с хелпером к битмапу если картинок много скролинг тормазит у листвью даже на винде. 

Изменено пользователем haword
Ссылка на комментарий
  • 0
  • Модераторы
2 часа назад, haword сказал:

да и кстати в том же примере с хелпером к битмапу если картинок много скролинг тормазит у листвью даже на винде. 

Вот небольшое видео, сорри за качество. Триалка приложения

 

2 часа назад, haword сказал:

ссылка на обсуждения?

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

Так вся загрузка и должна через хелпер идти, зачем там лишнее городить?надеюсь в таксе не запускали загрузку картинки... тогда бы это все объяснило. На форуме уже выкладывал динамическую подгрузку картинок в LV. 

Ссылка на комментарий
  • 0

ну где ссылка на тему где можно насчет картинок потрындеть? 

17 часов назад, ZuBy сказал:

Вот небольшое видео, сорри за качество. Триалка приложения

понравилось. на чем ты сделал список в два три ряда картинок с вертикальным скролом? новый компонент на листвью или на скролбоксе с панелями замутил? колись :) я то ж хочу такое сделать. 

17 часов назад, ZuBy сказал:

Так вся загрузка и должна через хелпер идти, зачем там лишнее городить?надеюсь в таксе не запускали загрузку картинки... тогда бы это все объяснило. На форуме уже выкладывал динамическую подгрузку картинок в LV. 

у меня картинки из базы данных грузятся и лагают. 

Ссылка на комментарий
  • 0
  • Модераторы
18 минут назад, haword сказал:

ну где ссылка на тему где можно насчет картинок потрындеть? 

потрыньдеть можно хоть тут, но она не рассчитана на загрузку из БД.

24 минуты назад, haword сказал:

у меня картинки из базы данных грузятся и лагают. 

Неправильная организация архитектуры ведет к таким последствиям как у вас.

22 минуты назад, haword сказал:

понравилось. на чем ты сделал список в два три ряда картинок с вертикальным скролом? новый компонент на листвью или на скролбоксе с панелями замутил? колись :) я то ж хочу такое сделать. 

уже писал об этом тут

P.S. уважаемые модераторы, перенесите сообщения в другую тему

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...