1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HarmonyOS-tpc-vlayout

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

vlayout

Введение

Проект vlayout представляет собой мощное расширение LayoutManager для ListContainer, предоставляющее набор макетов для ListContainer. Это позволяет эффективно управлять сложными ситуациями, когда в одном ListContainer используются сетка, список и другие макеты.

С помощью предоставляемого пользователю LayoutManager'а VirtualLayout можно элегантно располагать дочерние представления с различными стилями в одном представлении. Пользовательский LayoutManager управляет последовательностью объектов layoutHelper, каждый из которых реализует специфическую логику макета для определенного диапазона позиций элементов. Кроме того, реализация нашего собственного layoutHelper и его предоставление в рамках фреймворка также поддерживаются.

Инструкции по использованию

  1. Инициализация LayoutManager :
ListContainer listContainer = (ListContainer) findComponentById(ResourceTable.Id_list_container);
VirtualLayoutManager virtualLayoutManager = new VirtualLayoutManager(this);
  1. Использование метода 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);
  1. ИЛИ использование метода 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);
  1. Вместо использования 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/HarmonyOS-tpc-vlayout.git
git@api.gitlife.ru:oschina-mirror/HarmonyOS-tpc-vlayout.git
oschina-mirror
HarmonyOS-tpc-vlayout
HarmonyOS-tpc-vlayout
master