Проект vlayout представляет собой мощное расширение LayoutManager для ListContainer, предоставляющее набор макетов для ListContainer. Это позволяет эффективно управлять сложными ситуациями, когда в одном ListContainer используются сетка, список и другие макеты.
С помощью предоставляемого пользователю LayoutManager'а VirtualLayout можно элегантно располагать дочерние представления с различными стилями в одном представлении. Пользовательский LayoutManager управляет последовательностью объектов layoutHelper, каждый из которых реализует специфическую логику макета для определенного диапазона позиций элементов. Кроме того, реализация нашего собственного layoutHelper и его предоставление в рамках фреймворка также поддерживаются.
ListContainer listContainer = (ListContainer) findComponentById(ResourceTable.Id_list_container);
VirtualLayoutManager virtualLayoutManager = new VirtualLayoutManager(this);
addAdapters
для добавления данных layoutHelper :
Можно использовать DelegateAdapter
как корневой адаптер для создания комбинации наших собственных адаптеров. Просто сделайте так, чтобы он расширял DelegateAdapter.Adapter
и переопределял метод onCreateLayoutHelper
.DelegateAdapter delegateAdapter = new DelegateAdapter(virtualLayoutManager);
// Затем мы можем установить под-адаптеры
GridLayoutHelper layoutHelper = new GridLayoutHelper(2, 2, shapeElement1, 250);
adapterList.add(new SubAdapter(this, layoutHelper, 2));
adapterList.add(new SubAdapter(new GridLayoutHelper(3, 120, shapeElement1, 2000)));
``````java
delegateAdapter.addAdapters(adapterList);
listContainer.setItemProvider(delegateAdapter);
setLayoutHelpers
для установки данных layoutHelper
: Другой способ заполнения LayoutHelpers
в ListContainer
следующим образом:final List<LayoutHelper> helpers = new LinkedList<>();
final GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(4, 28, shapeElement1, shapeElement2, 250);
helpers.add(DefaultLayoutHelper.newHelper(7, shapeElement1, shapeElement2, 250));
helpers.add(gridLayoutHelper);
layoutManager.setLayoutHelpers(helpers);
DelegateAdapter
можно использовать VirtualLayoutAdapter
напрямую:
Можно использовать setLayoutHelpers
для заполнения списка помощников, содержащих экземпляр различных помощников макета, и управление будет передано напрямую в VirtualLayoutManager
с помощью метода layoutManager.getComponent(position, component, componentContainer)
в переопределенном методе getComponent
, как показано ниже:listContainer.setItemProvider(new VirtualLayoutAdapter(layoutManager) {
@Override
public Component getComponent(int position, Component component, ComponentContainer componentContainer) {
return layoutManager.getComponent(position, component, componentContainer);
}
});
```5) Поддержка данных изображений с использованием vlayout: Если пользователь хочет установить данные изображения для любого LayoutHelper, то ему потребуется передать следующие дополнительные члены BaseLayoutHelper из приложения в библиотеку vlayout:
mLayoutHelper.viewImage = ResourceTable.Media_author; // где mLayoutHelper.viewImage — это фактический идентификатор ресурса изображения, присутствующий в папке media mLayoutHelper.viewType = "Image"; // где mLayoutHelper.viewType должно быть "Image" в случае компонента изображения, а для компонента текста ничего передавать не требуется или можно использовать этот член.
Примечание: На данный момент не поддерживаются массивы изображений для компонента изображения. ОсобенностиДобавлено Поддержка для
1.0.0
Первоначальное развертывание
DebugAbilitySlice:
Поддерживаемые основные возможности:
1) LinearLayoutHelper
2) GridLayoutHelper
Не поддерживаемые основные возможности:
1) StickyLayoutHelper
2) FixLayoutHelper
MainAbilitySlice:
Поддерживаемые основные возможности:
1) GridLayoutHelper
2) LinearLayoutHelper
3) DefaultLayoutHelper
Не поддерживаемые основные возможности:
1) ScrollFixLayoutHelper
OnePlusNLayoutAbilitySlice:
Поддерживаемые основные возможности:
1) LinearLayoutHelper
2) GridLayoutHelper
3) OnePlusNLayoutHelper
4) OnePlusNLayoutHelperEx
5) Banner
Не поддерживаемые основные возможности:
1) StickyLayoutHelper
2) ScrollFixLayoutHelper
TestAbilitySlice:
Поддерживаемые основные возможности:
1) GridLayoutHelper
VlayoutAbilitySlice:
Поддерживаемые основные возможности:
1) LinearLayoutHelper
2) SingleLayoutHelper
3) GridLayoutHelper
4) ColumnLayoutHelper
5) OnePlusNLayoutHelper
6) OnePlusNLayoutHelperEx
7) StaggeredGridLayoutHelper
8) BannerLayout
9) RangeGridLayoutHelper
Не поддерживаемые основные возможности:
1) FloatLayoutHelper
2) StickyLayoutHelper
3) FixLayoutHelper
4) ScrollFixLayoutHelperНеподдерживаемые возможности в приложении: Из-за отсутствия RecyclerView и текущей поддержки ListContainer в openharmony указанные возможности не поддерживаются (FloatLayoutHelper, StickyLayoutHelper, FixLayoutHelper, ScrollFixLayoutHelper). У нас есть следующие ограничения:
1) Дочерние элементы StaggeredGridLayout могут быть отображены до видимости экрана.
2) GridLayoutHelper должен иметь количество дочерних элементов согласно количеству столбцов, чтобы заполнить ширину. В противном случае будут созданы пустые пространства.
3) Функционал прыжков будет рассматривать некоторое множество дочерних элементов как единственный элемент (например, в сетке одна строка будет рассматриваться как один элемент).
4) Нумерация основана на макетах (каждый макет начинается с нуля).
5) Функционал прыжков не обрабатывается для всех случаев (то же самое, что и в оригинале).
6) Изменение ориентации не поддерживается (ориентация макета/устройства).
7) Установка отступов каждого дочернего элемента с помощью метода setMargins не поддерживается.
8) RangeGridLayoutHelper: Если передаются некорректные диапазоны (то есть превышение диапазона более общего количества элементов), то все компоненты, определенные в этом объекте, будут отрисованы от начальной точки до конечной точки. Если увеличить количество элементов массива setWeight больше чем количество столбцов, поведение может быть случайным. SetHGap и SetVGap не поддерживаются.Примечания:
1) Реальный сценарий тестирования был создан с использованием оригинальной библиотеки без использования её компонентов. Здесь мы подготовили его с помощью GridLayoutHelper.
2) Текущее расположение и ориентация установлены в соответствии с поведением оригинала. Дополнительное тестирование этих представлений не проводилось.
3) Цвета и отступы могут немного отличаться от оригинала.
4) Разметка баннера такая же, как у LinearLayout. Поэтому никаких изменений для разделения их нет.## Инструкции по установке
Метод 1: Создайте пакет har из библиотеки и добавьте его в папку lib. Добавьте следующий код в градл-файл входа:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
Метод 2: allprojects { repositories { mavenCentral() } } implementation 'io.openharmony.tpc.thirdlib:vlayout:1.0.0'
## Лицензия:
Vlayout доступна под лицензией MIT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )