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

iOS и долгая операция


FeLDMARShaL

Вопрос

Есть форма, на которой находится скроллируемая панель. На эту панель динамически добавляются много картинок (сначала добавляется просто имидж, а потом в этот имидж загружается картинка). Сама картинка добавляется непосредственно когда происходит первая отрисовка компонента имиджа на событии OnApplyStyleLookup. В итоге мы имеем что при прокрутки скрол панель лагает.

Что бы избавиться от лагания, надо все картинки добавить до начала скролла, и выполнить процедуру ApplyStyleLookup у каждого элемента на скрол панели. Эта операция выполняется довольно долго, и в случае с iOS система закрывает приложение (т.к. долго висит GUI без ответа). Избавиться от этого можно если в цикле добавления картинок сделать Application.ProcessMessages, но в этом случае время этой операции увеличивается многократно.

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

У меня реализовано примерно тоже самое, но процесс непосрественного добавления картинки в то место где она должна быть заставляет сильно дергаться скролпанель.

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

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

  • 0

Другой компонент не получится использовать, слишком много переделок придется делать.

Сейчас используется не просто картинка там целый бутерброд. Первый слой горизонтальная скрол панель, на которой 3 блока слева, центральный и справа, центральный - наша картинка, слева и справа - это когда пользователь оттягивает панель (типа магазина, слева +1, +2, +3,...+5 - в зависимости от силы оттягивания, с справа -1...-5 тоже в зависимости от силы оттягивания.

Т.е. проблема может решиться 2 способами, либо както выполнить длительную операцию таким способом чтобы iOS не убила приложение, либо как то загрузиться картинку таким способом чтобы при движении эта панель не лагала. Лично мне нравится как сейчас смотрится, но заказчик обратил на это внимание. Приходится обдумывать варианты решения.

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

через инет - разумеется в отдельном потоке (у нас крутится индикатор анимированнй в этот момент), но потом в главном потоке добавляются непосредственно в имидж;

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

Видео которое предоставил один из тестировщиков

https://yadi.sk/mail/?hash=llCT1CjN1iao%2BW24a1pRKs%2FMndfYdrsblt3N%2FK8TaEy9%2B8EMdvuDTt9oBKBAUcMKq%2FJ6bpmRyOJonT3VoXnDag%3D%3D

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

Изменено пользователем FeLDMARShaL
Ссылка на комментарий
  • 0
  • Модераторы

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

  • динамическая подгрузка
  • ложное срабатывание
  • скроллинг

единственно не понятно на счёт смещение, это аналогично доп. меню в айос?

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

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...