Transcript

Сложный интерфейс в Xamarin.Forms

Вячеслав Черников

О чем?

Идем от задачи

Виртуализация коллекции

Подключаем FastGrid

Дорабатываем FastGrid

Тюнинг ячеек

Результат

Виртуализация коллекций

Подключаем FastGrid

https://github.com/twintechs/TwinTechsFormsLib

UICollectionView для iOS

RecyclerView для Android

FastGrid, компоновка ячеекВАЖНО: Поддержка горизонтальной и вертикальной ориентации

iOSLayout на базе UICollectionViewFlowLayout

AndroidLayout на базе GridLayoutManager с использованием Grid Span

FastGrid, Template Selectorvar templateSelector = new FastGridTemplateSelector();var productWidth = screenWidth / 3 - 1;templateSelector.DataTemplates.AddRange(new[] { new FastGridDataTemplate(typeof (ProductModel).Name, typeof (ProductViewCell), new Size(productWidth, 120)), new FastGridDataTemplate(typeof (string).Name, typeof (LoadingShopViewCell), new Size(screenWidth, 140))});templateSelector.Prepare();

FastGrid, Pull-To-RefreshiOSСтандартный UIRefreshControl

AndroidСтандартный SwipeRefreshLayout

FastGrid, Load moreВариант 1. Обновление всей таблицы

Вариант 2. Использование ObservableRangeCollection

ObservableRangeCollection<T>:Collection<T>,INotifyCollectionChanged

NotifyCollectionChangedAction.AddNotifyCollectionChangedAction.RemoveNotifyCollectionChangedAction.Reset

Тюнинг ячеек, свой Layout

public enum ProductLayoutViewTypes { Image, Price, OriginalPrice, Discount, }

ДЕМО

1. FastGrid2. Тюнинг коллекции3. Тюнинг ячеек

Вячеслав Черников[email protected]

Сложные интерфейсы в XF