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

OSCHINA-MIRROR/HarmonyOS-tpc-vlayout

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

vlayout

Введение

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

Предоставляя пользовательский LayoutManager для ListContainer, VirtualLayout может элегантно располагать дочерние представления с различным стилем в одном представлении. Пользовательский LayoutManager управляет серией layoutHelpers, каждый из которых реализует определённую логику макета для элементов определённого диапазона позиций. Кстати, также поддерживается реализация нашего собственного 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)));

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. Используйте VirtualLayoutAdapter напрямую вместо DelegateAdapter: Мы можем использовать setLayoutHelpers, чтобы заполнить список помощников, содержащих экземпляры различных layoutHelpers, и управление будет напрямую переходить к VirtualLayoutManager с помощью layoutManager.getComponent(position, component, componentContainer) в getComponent, который является переопределённым методом VirtualLayoutAdapter, как показано ниже:
   listContainer.setItemProvider(new VirtualLayoutAdapter(layoutManager) {
     @Override
     public Component getComponent(int position, Component component, ComponentContainer componentContainer) {
            return layoutManager.getComponent(position, component, componentContainer);
     }
  1. Поддержка данных изображений с использованием vlayout: Если пользователь хочет установить данные изображения для любого LayoutHelper, то пользователю необходимо передать следующие дополнительные члены BaseLayoutHelper из приложения в библиотеку vlayout:
mLayoutHelper.viewImage = ResourceTable.Media_author;   //где mLayoutHelper.viewImage — фактический идентификатор ресурса изображения, присутствующий в папке media
mLayoutHelper.viewType = "Image";  //где mLayoutHelper.viewType должен быть «Image» в случае компонента Image, для компонента Text не нужно передавать что-либо или использовать этот член.

Примечание: В настоящее время не поддерживается установка массива изображений в компоненте Image.

Особенности Добавлена поддержка

1.0.0 Первый выпуск

Slice отладки:

Поддерживаемые функции:

  1. LinearLayoutHelper
  2. GridLayoutHelper

Неподдерживаемые функции:

  1. StickyLayoutHelper
  2. FixLayoutHelper

Основной срез:

Поддерживаемые функции:

  1. GridLayoutHelper
  2. LinearLayoutHelper
  3. DefaultLayoutHelper

Неподдерживаемые функции:

  1. ScrollFixLayoutHelper

Срез OnePlusN:

Поддерживаемые функции:

  1. LinearLayoutHelper
  2. GridLayoutHelper
  3. OnePlusNLayoutHelper
  4. OnePlusNLayoutHelperEx
  5. Banner

Неподдерживаемые функции:

  1. StickyLayoutHelper
  2. ScrollFixLayoutHelper

Тестовый срез:

Поддерживаемые функции:

  1. GridLayoutHelper

VlayoutSlice:

Поддерживаемые функции:

  1. LinearLayoutHelper
  2. SingleLayoutHelper
  3. GridLayoutHelper
  4. ColumnLayoutHelper
  5. OnePlusNLayoutHelper
  6. OnePlusNLayoutHelperEx Unsupported функции:
  1. FloatLayoutHelper.
  2. StickyLayoutHelper.
  3. FixLayoutHelper.
  4. ScrollFixLayoutHelper.

Функции, которые не поддерживаются в приложении: Из-за недоступности RecyclerView и текущей поддержки ListContainer упомянутые функции не поддерживаются (FloatLayoutHelper, StickyLayoutHelper, FixLayoutHelper, ScrollFixLayoutHelper). Есть следующие ограничения:

  1. Дочерние элементы StaggeredGridLayout могут быть отрисованы до видимости экрана.

  2. GridLayoutHelper должен иметь количество дочерних элементов в соответствии с диапазоном, чтобы он мог заполнить ширину. В противном случае будут созданы пустые пространства.

  3. Функция перехода будет рассматривать некоторые наборы дочерних элементов как один элемент (например, в сетке одна строка будет рассматриваться как один элемент).

  4. Нумерация задаётся на основе макетов (каждый макет начинается с 0).

  5. Функциональность перехода не обрабатывается для всех случаев (так же, как и в оригинале).

  6. Не поддерживаются изменения ориентации (ориентация макета/устройства).

  7. Не поддерживается индивидуальное расположение полей дочернего представления с помощью API setMargins.

  8. RangeGridLayoutHelper: если мы передадим неправильный диапазон (то есть превысим диапазон больше, чем общее количество элементов), то он будет рисовать все компоненты, определённые в этом объекте, от начальной точки до конечной точки, и если мы увеличим элементы массива setWeight больше, чем счётчик диапазона, поведение может быть разным. SetHGap и SetVGap не поддерживаются.

Примечания:

  1. Тестирование проводилось с использованием оригинального lib без использования библиотечного компонента. Здесь мы подготовили его с использованием GridLayoutHelper.

  2. Текущий макет и ориентация установлены на основе исходного поведения. Дополнительное тестирование этих представлений не проводилось.

  3. Цвета и поля будут немного отличаться от оригинала.

  4. Баннерный макет такой же, как LinearLayout. Поэтому никаких изменений не было сделано, чтобы выделить его.

Инструкции по установке

Способ 1: Сгенерируйте har-пакет из библиотеки и добавьте его в папку lib. Добавьте следующий код в gradle записи:

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://gitlife.ru/oschina-mirror/HarmonyOS-tpc-vlayout.git
git@gitlife.ru:oschina-mirror/HarmonyOS-tpc-vlayout.git
oschina-mirror
HarmonyOS-tpc-vlayout
HarmonyOS-tpc-vlayout
master