мопед не мой: В LVGL эквивалентом "custom container" из TouchGFX будет пользовательский объект (custom object) или контейнер (container), который можно создавать и использовать повторно на разных экранах. LVGL предоставляет гибкие механизмы для создания таких компонентов.
-
Создание пользовательского объекта (custom widget):
- Вы можете создать собственный объект, объединяя несколько виджетов в один контейнер. Например, можно создать контейнер (
lv_obj_t
), добавить в него необходимые виджеты (например, изображения, текстовые метки и т.д.), и затем использовать этот контейнер на разных экранах.
- Для этого можно использовать функцию
lv_obj_create()
и добавлять в него дочерние элементы с помощью lv_obj_set_parent()
.
-
Использование контейнера:
- Созданный контейнер можно добавлять на разные экраны, просто изменяя его родителя с помощью
lv_obj_set_parent()
.
-
Пример создания статусбара:
lv_obj_t* create_status_bar(lv_obj_t* parent) {
// Создаем контейнер для статусбара
lv_obj_t* status_bar = lv_obj_create(parent);
lv_obj_set_size(status_bar, LV_HOR_RES, 30); // Высота статусбара
lv_obj_set_style_bg_color(status_bar, lv_color_hex(0x000000), 0); // Цвет фона
// Добавляем элементы в статусбар (например, текстовую метку)
lv_obj_t* label = lv_label_create(status_bar);
lv_label_set_text(label, "Status Bar");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
return status_bar;
}
// Использование на разных экранах
lv_obj_t* screen1 = lv_obj_create(NULL);
lv_obj_t* screen2 = lv_obj_create(NULL);
lv_obj_t* status_bar1 = create_status_bar(screen1);
lv_obj_t* status_bar2 = create_status_bar(screen2);
lv_scr_load(screen1); // Загружаем первый экран
-
Переиспользование контейнера:
- Если вам нужно переиспользовать один и тот же контейнер на разных экранах, вы можете просто изменять его родителя с помощью
lv_obj_set_parent()
.
-
Стилизация и управление:
- Вы можете применять стили к контейнеру и его элементам, чтобы управлять их внешним видом и поведением. LVGL предоставляет мощные инструменты для стилизации через
lv_style_t
.
- LVGL более гибкий и легковесный по сравнению с TouchGFX.
- Он поддерживает множество виджетов и позволяет легко создавать пользовательские компоненты.
- LVGL имеет открытый исходный код и активно развивается.
Таким образом, в LVGL вы можете достичь аналогичной функциональности, используя контейнеры и пользовательские объекты.