Александр Клопоцкий Posted May 22, 2020 Posted May 22, 2020 По "демо проекту": "Ресурсы" -> "Изображения" -> "Выгрузка изображений из памяти" сделал каталог. В "Assets Manager" загрузил изображения 292 страниц каталога. Без включения выгрузки из памяти, при прокрутке на 26 странице возникает ошибка нехватки памяти. После включения выгрузки из памяти прокручиваются все 292 страницы. Спасибо, прекрасно работает! TfgAssetsManager.Current.AutoreleaseOptions.Enabled := True; 1
Administrators Yaroslav Brovin Posted May 22, 2020 Administrators Posted May 22, 2020 Могу только сказать, что выглядит круто! ? И рад, что инструмент работает и реально помогает. А еще хочу отметить функционал просмотра страниц с зумом. Как доделаете приложение, обязательно опубликуйте его описание в разделе:https://forum.fgx-native.com/forum/63-публикация-проектов-клиентов/
Александр Клопоцкий Posted May 23, 2020 Author Posted May 23, 2020 Спасибо "sinuke" https://forum.fgx-native.com/profile/7-sinuke/ за публикацию проекта "Проверка контрольных знаков" и исходного кода в общий доступ: https://github.com/sinuke/excises Там я смотрел, как правильно добавлять, вызывать и закрывать дополнительные формы в свой проект. Эту тему можно вынести и на вебинары по обзору возможностей библиотеки. Добавил вызов формы просмотра выбранной страницы каталога: procedure TfmCatalog.ShowCatalogPage; begin fmCatalogPage := TfmCatalogPage.Create(Self); fmCatalogPage.IsAnimating := True; TfgAnimationHelper.ShowForm(fmCatalogPage, [TfgAnimationOption.StartFromCurrent], ANIMATION_DIRATION, procedure begin fmCatalogPage.IsAnimating := False; end); end; По "демо проекту": "Компоненты" -> "TfgCollectionView" -> "Выделение" сделал вызов формы просмотра выделенной страницы каталога: procedure TfmCatalog.cvCatSelectionChanged(Sender: TObject; const ASelectedItems: TArray<System.Integer>); var ItemIndex: Integer; begin for ItemIndex in ASelectedItems do begin CatalogPage := ItemIndex + 1; ShowCatalogPage; end; end; По "демо проекту": "Жесты" -> "Жест "Zoom" - увеличение масштаба" без изменения кода примера добавил функционал просмотра страницы каталога с Zoom: procedure TfmCatalogPage.imCatPageZoom(Sender: TObject; const AZoomInfo: TfgZoomInfo); begin if AZoomInfo.Phase = TfgGesturePhase.&InProgress then begin imCatPage.PositionMode := TfgImage.DefaultPositionMode; imCatPage.Size.SetSizeF(AZoomInfo.InitialSize.cx * AzoomInfo.Scale, AZoomInfo.InitialSize.cy * AzoomInfo.Scale); imCatPage.Position.Point := imCatPage.LocalToForm(AZoomInfo.Focus) - AZoomInfo.InitialFocus * AzoomInfo.Scale; imCatPage.Realign; end; end; 2 2
knsg12 Posted May 23, 2020 Posted May 23, 2020 @Александр Клопоцкий спасибо что поделились. Вопрос: вы все 292 изображения загрузили в АссетМенеджер? А если картинки нужно будет менять? Или это для примера?
Александр Клопоцкий Posted May 23, 2020 Author Posted May 23, 2020 Первая версия каталога, которая работала пару месяцев, у меня была сделана по "демо проекту": "Ресурсы" -> "Изображения" -> "Асинхронная загрузка изображения по URI". На хостинг я выкладывал новые *.jpg страниц каталога, и они открывались в приложении без обновления приложения. Это тот способ обновления, который использует официальное приложение от компании "Фаберлик". Приложение по размеру маленькое, все тащит через интернет. Навигация по страницам каталога: "<< Первая", "< Предыдущая", "Следующая >", "Последняя >>" и "Введите номер", какую страницу показать. Про клиентов приложения - это девушки, которые выбирают товар, рекламируют, продают его везде и всегда, "сетевики", ну и новые клиенты, которые готовы листать этот каталог вдоль и поперек часами, выискивая выгодные цены. Они часто листают каталог, где нет хорошего интернета, за городом, на даче, на шашлыках, и туалете, в автобусе, и им надо быстро сразу весь каталог полистать взад - вперед и увеличить где нужно. Я предложил им второй вариант, где каталог жестко зашит в "Assets Manager". Размер приложения сразу увеличился с 15 Mb до 65 Mb, но зато теперь каталог всегда с ними и они его могут всегда "кручу - верчу - смотрю как хочу", он у них летает. Для обновления в начале каталога нажимают ссылку на "Google Play" и обновляются без проблем. Знают число, когда каталог меняется и я рассылаю по "демо проекту": "Push-уведомления" -> "Получение Push-уведомления" - "Новый каталог, обновите приложение!". Им этот вариант однозначно больше нравиться. Они ведь всегда по причине нестабильного интернета скачивали себе в "Галерею" каталог в виде фото, это 300 *.jpg рисунков разрешения 902 x 1352. Каталог менялся, "Галерея" засорялась, они уже путались, это в "Галерее" новый каталог или старый, чистить не все умели, памяти со временем не хватало. А при обновлении приложения старый каталог гарантированно уйдет из памяти телефона и заменится новым, и не надо "Галерею" чистить потому как каталог в приложении. Ну и насчет памяти, в смысле стремления сделать приложение как можно меньшего размера. Это как с ассемблером, где каждый байт экономили, по тому как раньше объемы памяти были очень ограниченные. Сейчас памяти становиться много, экономить уже не нужно, ограничение это уже снимается, важным становиться удобство использования. Эта ошибка "нехватка памяти" при листании, которую я привел выше возникала на "дохлом" телефоне "Xiaomi Redmi Note 3" без включенной "выгрузки из памяти". В хороших последних телефонах она не возникает даже при выключенной "выгрузки из памяти", хватает памяти загрузить весь "Assets Manager" и листать его. Здесь выбор: Приложение либо универсальное, маленькое но медленное, которое обновлять не надо – Либо не универсальное, большое но быстрое, которое обновлять надо. Мои пользователи однозначно выбрали второе. 4
Recommended Posts