ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
23 февраля
1500527 Топик полностью
SciFi (Вчера, 10:31, просмотров: 121) ответил AlexG на TouchGFX vs LVGL. В TouchGFX есть такая штука, "custom container" - контейнер с виджетами, который можно использовать повторно много раз на разных экранах. Например, так можно сделать статусбар, присутствующий на всех экранах. Что будет эквивалентом в LVGL?
мопед не мой: 

В LVGL эквивалентом "custom container" из TouchGFX будет пользовательский объект (custom object) или контейнер (container), который можно создавать и использовать повторно на разных экранах. LVGL предоставляет гибкие механизмы для создания таких компонентов.

  1. Создание пользовательского объекта (custom widget):

    • Вы можете создать собственный объект, объединяя несколько виджетов в один контейнер. Например, можно создать контейнер (lv_obj_t), добавить в него необходимые виджеты (например, изображения, текстовые метки и т.д.), и затем использовать этот контейнер на разных экранах.
    • Для этого можно использовать функцию lv_obj_create() и добавлять в него дочерние элементы с помощью lv_obj_set_parent().
  2. Использование контейнера:

    • Созданный контейнер можно добавлять на разные экраны, просто изменяя его родителя с помощью lv_obj_set_parent().
  3. Пример создания статусбара:

    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); // Загружаем первый экран
    
  4. Переиспользование контейнера:

    • Если вам нужно переиспользовать один и тот же контейнер на разных экранах, вы можете просто изменять его родителя с помощью lv_obj_set_parent().
  5. Стилизация и управление:

    • Вы можете применять стили к контейнеру и его элементам, чтобы управлять их внешним видом и поведением. LVGL предоставляет мощные инструменты для стилизации через lv_style_t.
  • LVGL более гибкий и легковесный по сравнению с TouchGFX.
  • Он поддерживает множество виджетов и позволяет легко создавать пользовательские компоненты.
  • LVGL имеет открытый исходный код и активно развивается.

Таким образом, в LVGL вы можете достичь аналогичной функциональности, используя контейнеры и пользовательские объекты.

ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้