LVGL 8.3.10版本应用子函数

这段代码展示了如何创建一个通用函数来控制N个控件的显示和隐藏,并提供了一个简单的示例用法。

#include "lvgl.h"

// 这个函数用于控制N个控件的显示和隐藏,并检查控件是否为空指针
void control_widgets_visibility(lv_obj_t **widgets, uint8_t num_widgets, bool hide) {
    if (widgets == NULL) {
        return;  // 如果控件数组为空,直接返回
    }

    for (uint8_t i = 0; i < num_widgets; ++i) {
        if (widgets[i] != NULL) {  // 检查当前控件是否为空指针
            if (hide) {
                lv_obj_add_flag(widgets[i], LV_OBJ_FLAG_HIDDEN);
            } else {
                lv_obj_clear_flag(widgets[i], LV_OBJ_FLAG_HIDDEN);
            }
        }
    }
}

// 示例代码:如何使用上述函数
int main(void) {
    // 初始化LVGL
    lv_init();

    // 初始化硬件(例如,LVGL驱动程序等)

    // 假设你有8个控件
    uint8_t num_widgets = 8;
    lv_obj_t *widgets[num_widgets];

    // 创建8个控件并初始化为标签
    for (uint8_t i = 0; i < num_widgets; ++i) {
        widgets[i] = lv_label_create(lv_scr_act());
        lv_label_set_text_fmt(widgets[i], "Label %d", i + 1);
    }

    // 隐藏所有控件
    control_widgets_visibility(widgets, num_widgets, true);

    // 显示所有控件
    control_widgets_visibility(widgets, num_widgets, false);

    // 在主循环中处理LVGL
    while (1) {
        lv_task_handler(); // LVGL任务处理
        // 你自己的其他代码
    }

    return 0;
}

以下是一个示例项目,包括一个头文件和一个C文件,包含了30个基于LVGL 8.3.10版本的常用应用层函数,并且提供了完整的中文注释。

#头文件 : lvgl_apps.h

#ifndef LVGL_APPS_H
#define LVGL_APPS_H

#include "lvgl.h"

    // 显示控件集合中的所有控件
    void
    show_widgets(lv_obj_t *widgets[], int num);

// 隐藏控件集合中的所有控件
void hide_widgets(lv_obj_t *widgets[], int num);

// 切换控件的可见性
void toggle_widget(lv_obj_t *widget);

// 设置控件的文本
void set_widget_text(lv_obj_t *widget, const char *text);

// 设置控件的大小
void set_widget_size(lv_obj_t *widget, lv_coord_t width, lv_coord_t height);

// 设置控件的位置
void set_widget_pos(lv_obj_t *widget, lv_coord_t x, lv_coord_t y);

// 注册控件的点击事件回调
void register_click_event(lv_obj_t *widget, lv_event_cb_t cb);

// 更新控件的样式
void update_widget_style(lv_obj_t *widget, lv_style_t *style);

// 创建一个新的按钮
lv_obj_t *create_button(lv_obj_t *parent, lv_event_cb_t cb);

// 创建一个新的标签
lv_obj_t *create_label(lv_obj_t *parent, const char *text);

// 创建新的文本框
lv_obj_t *create_textarea(lv_obj_t *parent);

// 更新标签的文本
void update_label_text(lv_obj_t *label, const char *text);

// 设置控件的透明度
void set_widget_opacity(lv_obj_t *widget, lv_opa_t opa);

// 设置控件的背景颜色
void set_widget_bg_color(lv_obj_t *widget, lv_color_t color);

// 显示消息框
lv_obj_t *show_msgbox(lv_obj_t *parent, const char *title, const char *text, const char **btns);

// 创建新的进度条
lv_obj_t *create_progress_bar(lv_obj_t *parent, int32_t range);

// 更新进度条的值
void update_progress_bar(lv_obj_t *bar, int32_t value);

// 创建新的滑动条
lv_obj_t *create_slider(lv_obj_t *parent, int32_t range);

// 更新滑动条的值
void update_slider_value(lv_obj_t *slider, int32_t value);

// 创建新的图像控件
lv_obj_t *create_image(lv_obj_t *parent, const void *src);

// 加载新图像到图像控件
void load_image(lv_obj_t *img, const void *src);

// 设置控件的边框颜色
void set_widget_border_color(lv_obj_t *widget, lv_color_t color);

// 设置控件的边框宽度
void set_widget_border_width(lv_obj_t *widget, lv_coord_t width);

// 设置控件的圆角
void set_widget_radius(lv_obj_t *widget, lv_coord_t radius);

// 更新文本框的文本
void update_textarea_text(lv_obj_t *textarea, const char *text);

// 创建下拉列表
lv_obj_t *create_dropdown(lv_obj_t *parent, const char *options);

// 更新下拉列表的选项
void update_dropdown_options(lv_obj_t *dropdown, const char *options);

// 创建开关控件
lv_obj_t *create_switch(lv_obj_t *parent);

// 切换开关控件的状态
void toggle_switch(lv_obj_t *sw, bool state);

// 创建新的滚动视图
lv_obj_t *create_scroll_view(lv_obj_t *parent);

// 创建新的表格
lv_obj_t *create_table(lv_obj_t *parent, int row_cnt, int col_cnt);

// 设置控件的边框透明度
void set_widget_border_opa(lv_obj_t *widget, lv_opa_t opa);
// 设置控件的边框类型
void set_widget_border_side(lv_obj_t *widget, lv_border_side_t side);
// 设置控件的背景透明度
void set_widget_bg_opa(lv_obj_t *widget, lv_opa_t opa);
// 设置控件的对齐方式
void set_widget_align(lv_obj_t *widget, lv_align_t align);
// 创建新的图表
lv_obj_t *create_chart(lv_obj_t *parent);
// 更新图表数据
void update_chart_data(lv_obj_t *chart, lv_chart_series_t *series, const lv_coord_t *data, uint16_t point_cnt);
// 创建新的进度环
lv_obj_t *create_arc(lv_obj_t *parent, int32_t min, int32_t max);
// 设置进度环的值
void set_arc_value(lv_obj_t *arc, int32_t value);
// 创建新的列表
lv_obj_t *create_list(lv_obj_t *parent);
// 向列表添加按钮
lv_obj_t *add_list_btn(lv_obj_t *list, const char *text, lv_event_cb_t cb);
// 创建新的滚动条
lv_obj_t *create_scroll_bar(lv_obj_t *parent);
// 设置滚动条的范围
void set_scroll_bar_range(lv_obj_t *scroll_bar, lv_coord_t min, lv_coord_t max);
// 创建新的折叠面板
lv_obj_t *create_accordion(lv_obj_t *parent, const char *title);
// 展开折叠面板
void expand_accordion(lv_obj_t *accordion);
// 收起折叠面板
void collapse_accordion(lv_obj_t *accordion);

// 创建LED控件
lv_obj_t *create_led(lv_obj_t *parent);
// 打开LED
void led_on(lv_obj_t *led);
// 关闭LED
void led_off(lv_obj_t *led);
// 设置LED的亮度
void set_led_brightness(lv_obj_t *led, uint8_t brightness);

// 创建滚动文本
lv_obj_t *create_roller(lv_obj_t *parent, const char *options);
// 更新滚动文本的选项
void update_roller_options(lv_obj_t *roller, const char *options);

// 创建进度条
lv_obj_t *create_bar(lv_obj_t *parent, int32_t min, int32_t max);
// 设置进度条的值
void set_bar_value(lv_obj_t *bar, int32_t value);

// 创建贴图
lv_obj_t *create_canvas(lv_obj_t *parent);
// 设置贴图的尺寸
void set_canvas_size(lv_obj_t *canvas, lv_coord_t width, lv_coord_t height);

// 创建键盘
lv_obj_t *create_keyboard(lv_obj_t *parent);
// 设置键盘目标
void set_keyboard_target(lv_obj_t *keyboard, lv_obj_t *target);

// 创建新的滚动标签
lv_obj_t *create_scrollable_label(lv_obj_t *parent);
// 设置滚动标签的文本
void set_scrollable_label_text(lv_obj_t *scrollable_label, const char *text);
// 创建新的切换按钮
lv_obj_t *create_toggle_btn(lv_obj_t *parent);
// 获取切换按钮的状态
bool get_toggle_btn_state(lv_obj_t *toggle_btn);
// 设置切换按钮的状态
void set_toggle_btn_state(lv_obj_t *toggle_btn, bool state);
// 创建新的页控件
lv_obj_t *create_page(lv_obj_t *parent);
// 设置页控件的滚动方向
void set_page_scroll_dir(lv_obj_t *page, lv_dir_t dir);
// 创建新的弹出菜单
lv_obj_t *create_popup_menu(lv_obj_t *parent, const char *title, const char **options);
// 设置弹出菜单的选项
void set_popup_menu_options(lv_obj_t *popup_menu, const char **options);
// 创建新的进度条动画
lv_anim_t *create_progress_bar_anim(lv_obj_t *progress_bar, int32_t start, int32_t end, uint32_t time, lv_anim_path_t *path);
// 设置进度条动画的路径
void set_progress_bar_anim_path(lv_anim_t *anim, lv_anim_path_t *path);
// 创建新的音量控制器
lv_obj_t *create_volume_ctrl(lv_obj_t *parent);
// 设置音量控制器的音量
void set_volume_ctrl_volume(lv_obj_t *volume_ctrl, int32_t volume);
// 创建新的数据表格
lv_obj_t *create_data_table(lv_obj_t *parent, int row_cnt, int col_cnt);
// 设置数据表格的单元格文本
void set_data_table_cell_text(lv_obj_t *table, int row, int col, const char *text);
// 创建新的色轮控件
lv_obj_t *create_color_wheel(lv_obj_t *parent, bool wheel);
// 获取色轮控件的颜色
lv_color_t get_color_wheel_color(lv_obj_t *color_wheel);
// 创建新的导航栏
lv_obj_t *create_nav_bar(lv_obj_t *parent);
// 向导航栏添加按钮
lv_obj_t *add_nav_bar_btn(lv_obj_t *nav_bar, const char *label, lv_event_cb_t cb);
// 创建新的日历控件
lv_obj_t *create_calendar(lv_obj_t *parent);
// 设置日历控件的日期
void set_calendar_date(lv_obj_t *calendar, int year, int month, int day);
// 创建新的时间选择器
lv_obj_t *create_time_picker(lv_obj_t *parent);
// 获取时间选择器的时间
void get_time_picker_time(lv_obj_t *time_picker, int *hour, int *minute);

// 创建新的标签页控件
lv_obj_t *create_tabview(lv_obj_t *parent);
// 向标签页控件添加标签页
lv_obj_t *add_tabview_tab(lv_obj_t *tabview, const char *title);
// 创建新的信息提示框
lv_obj_t *create_info_popup(lv_obj_t *parent, const char *message);
// 显示信息提示框
void show_info_popup(lv_obj_t *popup);
// 隐藏信息提示框
void hide_info_popup(lv_obj_t *popup);

// 创建新的二维码控件
lv_obj_t *create_qr_code(lv_obj_t *parent, const char *text);
// 更新二维码控件的内容
void update_qr_code(lv_obj_t *qr_code, const char *text);
// 创建新的消息箱
lv_obj_t *create_message_box(lv_obj_t *parent, const char *title, const char *message);
// 显示消息箱
void show_message_box(lv_obj_t *msgbox);
// 隐藏消息箱
void hide_message_box(lv_obj_t *msgbox);
// 创建新的滑动开关
lv_obj_t *create_switch(lv_obj_t *parent);
// 设置滑动开关的状态
void set_switch_state(lv_obj_t *sw, bool state);
// 获取滑动开关的状态
bool get_switch_state(lv_obj_t *sw);
// 创建新的滑块
lv_obj_t *create_slider(lv_obj_t *parent, int32_t min, int32_t max);
// 设置滑块的值
void set_slider_value(lv_obj_t *slider, int32_t value);
// 获取滑块的值
int32_t get_slider_value(lv_obj_t *slider);
// 创建新的波动条(水平进度条)
lv_obj_t *create_wave_bar(lv_obj_t *parent);
// 设置波动条的值
void set_wave_bar_value(lv_obj_t *wave_bar, int32_t value);

// 创建新的图像控件
lv_obj_t *create_image(lv_obj_t *parent, const void *image_src);
// 设置图像控件的源图片
void set_image_src(lv_obj_t *image, const void *image_src);
// 创建新的复选框
lv_obj_t *create_checkbox(lv_obj_t *parent, const char *text);
// 设置复选框的状态
void set_checkbox_state(lv_obj_t *checkbox, bool state);
// 获取复选框的状态
bool get_checkbox_state(lv_obj_t *checkbox);
// 创建新的文本输入框
lv_obj_t *create_textarea(lv_obj_t *parent);
// 设置文本输入框的占位符
void set_textarea_placeholder(lv_obj_t *textarea, const char *placeholder);
// 创建新的数值选择控件
lv_obj_t *create_spinbox(lv_obj_t *parent, int32_t min, int32_t max);
// 设置数值选择控件的值
void set_spinbox_value(lv_obj_t *spinbox, int32_t value);
// 获取数值选择控件的值
int32_t get_spinbox_value(lv_obj_t *spinbox);

// 创建新的圆形按钮
lv_obj_t *create_round_btn(lv_obj_t *parent, const char *text);
// 设置圆形按钮的文本
void set_round_btn_text(lv_obj_t *btn, const char *text);
// 创建新的滚动选择器
lv_obj_t *create_picker(lv_obj_t *parent, const char *options);
// 设置滚动选择器的选项
void set_picker_options(lv_obj_t *picker, const char *options);

// 创建新的卡片视图控件
lv_obj_t *create_card_view(lv_obj_t *parent);
// 向卡片视图控件添加卡片
lv_obj_t *add_card(lv_obj_t *card_view, const char *title, const char *text);
// 创建新的提示信息控件
lv_obj_t *create_tooltip(lv_obj_t *parent, const char *text);
// 设置提示信息控件的文本
void set_tooltip_text(lv_obj_t *tooltip, const char *text);

// 创建新的列表控件
lv_obj_t *create_list(lv_obj_t *parent);
// 向列表控件添加项
lv_obj_t *add_list_item(lv_obj_t *list, const char *text, lv_event_cb_t event_cb);

// 创建新的页签视图
lv_obj_t *create_tabview(lv_obj_t *parent);
// 向页签视图添加页签
lv_obj_t *add_tab(lv_obj_t *tabview, const char *title);

// 创建新的日历控件
lv_obj_t *create_calendar(lv_obj_t *parent);
// 设置日历控件的日期
void set_calendar_date(lv_obj_t *calendar, uint16_t year, uint8_t month, uint8_t day);

// 创建新的动画控件
lv_obj_t *create_anim_obj(lv_obj_t *parent);
// 设置动画控件的属性
void set_anim_properties(lv_obj_t *anim_obj, lv_coord_t start_x, lv_coord_t start_y, lv_coord_t end_x, lv_coord_t end_y, uint32_t duration);

// 创建新的键盘控件
lv_obj_t *create_keyboard(lv_obj_t *parent);
// 设置键盘控件的模式
void set_keyboard_mode(lv_obj_t *keyboard, lv_keyboard_mode_t mode);

// 创建新的页码指示器控件
lv_obj_t *create_page_indicator(lv_obj_t *parent);
// 设置页码指示器控件的页码
void set_page_indicator_page(lv_obj_t *page_indicator, uint16_t page);

// 创建新的指针控件
lv_obj_t *create_pointer_lmeter(lv_obj_t *parent);
// 设置指针控件的值
void set_pointer_value(lv_obj_t *pointer, int16_t value);

// 创建新的加速计控件
lv_obj_t *create_accelerometer_lmeter(lv_obj_t *parent);
// 设置加速计控件的值
void set_accelerometer_value(lv_obj_t *accelerometer, int16_t value);

// 创建新的时钟控件
lv_obj_t *create_clock(lv_obj_t *parent);
// 设置时钟控件的时间
void set_clock_time(lv_obj_t *clock, int8_t hour, int8_t minute, int8_t second);

// 创建新的进度环控件
lv_obj_t *create_progress_ring(lv_obj_t *parent, uint16_t max_value);
// 更新进度环控件的值
void update_progress_ring(lv_obj_t *progress_ring, uint16_t value);

// 创建新的色彩选择器控件
lv_obj_t *create_color_picker(lv_obj_t *parent);
// 获取色彩选择器控件的选定颜色
lv_color_t get_color_picker_color(lv_obj_t *color_picker);

// 创建新的仪表盘控件
lv_obj_t *create_gauge(lv_obj_t *parent, int32_t min, int32_t max);
// 设置仪表盘控件的值
void set_gauge_value(lv_obj_t *gauge, int32_t value);

// 创建新的分隔条控件
lv_obj_t *create_separator(lv_obj_t *parent);
// 设置分隔条控件的方向
void set_separator_direction(lv_obj_t *separator, lv_dir_t dir);

// 创建新的选择开关控件
lv_obj_t *create_select_switch(lv_obj_t *parent, const char *options);
// 设置选择开关控件的选项
void set_select_switch_options(lv_obj_t *select_switch, const char *options);

// 创建新的完成任务控件
lv_obj_t *create_task_done(lv_obj_t *parent);
// 设置完成任务控件的状态
void set_task_done_status(lv_obj_t *task_done, bool done);

#endif // LVGL_APPS_H
## #C 文件 : `lvgl_apps.c`
#include "lvgl_apps.h"

    void
    show_widgets(lv_obj_t *widgets[], int num)
{
    for (int i = 0; i < num; i++)
    {
        lv_obj_clear_flag(widgets[i], LV_OBJ_FLAG_HIDDEN);
    }
}

void hide_widgets(lv_obj_t *widgets[], int num)
{
    for (int i = 0; i < num; i++)
    {
        lv_obj_add_flag(widgets[i], LV_OBJ_FLAG_HIDDEN);
    }
}

void toggle_widget(lv_obj_t *widget)
{
    if (lv_obj_has_flag(widget, LV_OBJ_FLAG_HIDDEN))
    {
        lv_obj_clear_flag(widget, LV_OBJ_FLAG_HIDDEN);
    }
    else
    {
        lv_obj_add_flag(widget, LV_OBJ_FLAG_HIDDEN);
    }
}

void set_widget_text(lv_obj_t *widget, const char *text)
{
    if (widget != NULL && text != NULL)
    {
        lv_label_set_text(widget, text);
    }
}

void set_widget_size(lv_obj_t *widget, lv_coord_t width, lv_coord_t height)
{
    if (widget != NULL)
    {
        lv_obj_set_size(widget, width, height);
    }
}

void set_widget_pos(lv_obj_t *widget, lv_coord_t x, lv_coord_t y)
{
    if (widget != NULL)
    {
        lv_obj_set_pos(widget, x, y);
    }
}

void register_click_event(lv_obj_t *widget, lv_event_cb_t cb)
{
    if (widget != NULL)
    {
        lv_obj_add_event_cb(widget, cb, LV_EVENT_CLICKED, NULL);
    }
}

void update_widget_style(lv_obj_t *widget, lv_style_t *style)
{
    if (widget != NULL && style != NULL)
    {
        lv_obj_add_style(widget, style, 0);
    }
}

lv_obj_t *create_button(lv_obj_t *parent, lv_event_cb_t cb)
{
    lv_obj_t *btn = lv_btn_create(parent);
    lv_obj_add_event_cb(btn, cb, LV_EVENT_CLICKED, NULL);
    return btn;
}

lv_obj_t *create_label(lv_obj_t *parent, const char *text)
{
    lv_obj_t *label = lv_label_create(parent);
    lv_label_set_text(label, text);
    return label;
}

lv_obj_t *create_textarea(lv_obj_t *parent)
{
    lv_obj_t *ta = lv_textarea_create(parent);
    return ta;
}

void update_label_text(lv_obj_t *label, const char *text)
{
    if (label != NULL && text != NULL)
    {
        lv_label_set_text(label, text);
    }
}

void set_widget_opacity(lv_obj_t *widget, lv_opa_t opa)
{
    if (widget != NULL)
    {
        lv_obj_set_style_opa(widget, opa, 0);
    }
}

void set_widget_bg_color(lv_obj_t *widget, lv_color_t color)
{
    if (widget != NULL)
    {
        lv_obj_set_style_bg_color(widget, color, 0);
    }
}

lv_obj_t *show_msgbox(lv_obj_t *parent, const char *title, const char *text, const char **btns)
{
    lv_obj_t *msgbox = lv_msgbox_create(parent, title, text, btns, true);
    lv_obj_center(msgbox);
    return msgbox;
}

lv_obj_t *create_progress_bar(lv_obj_t *parent, int32_t range)
{
    lv_obj_t *bar = lv_bar_create(parent);
    lv_bar_set_range(bar, 0, range);
    return bar;
}

void update_progress_bar(lv_obj_t *bar, int32_t value)
{
    if (bar != NULL)
    {
        lv_bar_set_value(bar, value, LV_ANIM_ON);
    }
}

lv_obj_t *create_slider(lv_obj_t *parent, int32_t range)
{
    lv_obj_t *slider = lv_slider_create(parent);
    lv_slider_set_range(slider, 0, range);
    return slider;
}

void update_slider_value(lv_obj_t *slider, int32_t value)
{
    if (slider != NULL)
    {
        lv_slider_set_value(slider, value, LV_ANIM_ON);
    }
}

lv_obj_t *create_image(lv_obj_t *parent, const void *src)
{
    lv_obj_t *img = lv_img_create(parent);
    if (img != NULL && src != NULL)
    {
        lv_img_set_src(img, src);
    }
    return img;
}

void load_image(lv_obj_t *img, const void *src)
{
    if (img != NULL && src != NULL)
    {
        lv_img_set_src(img, src);
    }
}

void set_widget_border_color(lv_obj_t *widget, lv_color_t color)
{
    if (widget != NULL)
    {
        lv_obj_set_style_border_color(widget, color, 0);
    }
}

void set_widget_border_width(lv_obj_t *widget, lv_coord_t width)
{
    if (widget != NULL)
    {
        lv_obj_set_style_border_width(widget, width, 0);
    }
}

void set_widget_radius(lv_obj_t *widget, lv_coord_t radius)
{
    if (widget != NULL)
    {
        lv_obj_set_style_radius(widget, radius, 0);
    }
}

void update_textarea_text(lv_obj_t *textarea, const char *text)
{
    if (textarea != NULL && text != NULL)
    {
        lv_textarea_set_text(textarea, text);
    }
}

lv_obj_t *create_dropdown(lv_obj_t *parent, const char *options)
{
    lv_obj_t *dropdown = lv_dropdown_create(parent);
    lv_dropdown_set_options(dropdown, options);
    return dropdown;
}

void update_dropdown_options(lv_obj_t *dropdown, const char *options)
{
    if (dropdown != NULL && options != NULL)
    {
        lv_dropdown_set_options(dropdown, options);
    }
}

lv_obj_t *create_switch(lv_obj_t *parent)
{
    lv_obj_t *sw = lv_switch_create(parent);
    return sw;
}

void toggle_switch(lv_obj_t *sw, bool state)
{
    if (sw != NULL)
    {
        lv_switch_set_state(sw, state);
    }
}

lv_obj_t *create_scroll_view(lv_obj_t *parent)
{
    lv_obj_t *scroll = lv_obj_create(parent);
    lv_obj_set_scrollbar_mode(scroll, LV_SCROLLBAR_MODE_AUTO);
    lv_obj_set_style_clip_corner(scroll, true, 0);
    lv_obj_set_size(scroll, lv_pct(100), lv_pct(100));
    return scroll;
}

lv_obj_t *create_table(lv_obj_t *parent, int row_cnt, int col_cnt)
{
    lv_obj_t *table = lv_table_create(parent);
    if (table != NULL)
    {
        lv_table_set_row_cnt(table, row_cnt);
        lv_table_set_col_cnt(table, col_cnt);
    }
    return table;
}

void set_widget_border_opa(lv_obj_t *widget, lv_opa_t opa)
{
    if (widget != NULL)
    {
        lv_obj_set_style_border_opa(widget, opa, 0);
    }
}

void set_widget_border_side(lv_obj_t *widget, lv_border_side_t side)
{
    if (widget != NULL)
    {
        lv_obj_set_style_border_side(widget, side, 0);
    }
}

void set_widget_bg_opa(lv_obj_t *widget, lv_opa_t opa)
{
    if (widget != NULL)
    {
        lv_obj_set_style_bg_opa(widget, opa, 0);
    }
}

void set_widget_align(lv_obj_t *widget, lv_align_t align)
{
    if (widget != NULL)
    {
        lv_obj_align(widget, align, 0, 0);
    }
}

lv_obj_t *create_chart(lv_obj_t *parent)
{
    lv_obj_t *chart = lv_chart_create(parent);
    return chart;
}

void update_chart_data(lv_obj_t *chart, lv_chart_series_t *series, const lv_coord_t *data, uint16_t point_cnt)
{
    if (chart != NULL && series != NULL && data != NULL)
    {
        lv_chart_set_next_value(chart, series, data, point_cnt);
    }
}

lv_obj_t *create_arc(lv_obj_t *parent, int32_t min, int32_t max)
{
    lv_obj_t *arc = lv_arc_create(parent);
    lv_arc_set_range(arc, min, max);
    return arc;
}

void set_arc_value(lv_obj_t *arc, int32_t value)
{
    if (arc != NULL)
    {
        lv_arc_set_value(arc, value);
    }
}

lv_obj_t *create_list(lv_obj_t *parent)
{
    lv_obj_t *list = lv_list_create(parent);
    return list;
}

lv_obj_t *add_list_btn(lv_obj_t *list, const char *text, lv_event_cb_t cb)
{
    if (list != NULL)
    {
        lv_obj_t *btn = lv_list_add_btn(list, LV_SYMBOL_FILE, text);
        lv_obj_add_event_cb(btn, cb, LV_EVENT_CLICKED, NULL);
        return btn;
    }
    return NULL;
}

lv_obj_t *create_scroll_bar(lv_obj_t *parent)
{
    lv_obj_t *scroll_bar = lv_bar_create(parent);
    return scroll_bar;
}

void set_scroll_bar_range(lv_obj_t *scroll_bar, lv_coord_t min, lv_coord_t max)
{
    if (scroll_bar != NULL)
    {
        lv_bar_set_range(scroll_bar, min, max);
    }
}

lv_obj_t *create_accordion(lv_obj_t *parent, const char *title)
{
    lv_obj_t *accordion = lv_obj_create(parent);
    lv_obj_set_size(accordion, lv_pct(100), LV_SIZE_CONTENT);
    lv_obj_set_layout(accordion, LV_LAYOUT_COLUMN_MID);

    lv_obj_t *header = lv_label_create(accordion);
    lv_label_set_text(header, title);
    return accordion;
}

void expand_accordion(lv_obj_t *accordion)
{
    if (accordion != NULL)
    {
        lv_obj_clear_flag(accordion, LV_OBJ_FLAG_HIDDEN);
    }
}

void collapse_accordion(lv_obj_t *accordion)
{
    if (accordion != NULL)
    {
        lv_obj_add_flag(accordion, LV_OBJ_FLAG_HIDDEN);
    }
}

lv_obj_t *create_led(lv_obj_t *parent)
{
    lv_obj_t *led = lv_led_create(parent);
    return led;
}

void led_on(lv_obj_t *led)
{
    if (led != NULL)
    {
        lv_led_on(led);
    }
}

void led_off(lv_obj_t *led)
{
    if (led != NULL)
    {
        lv_led_off(led);
    }
}

void set_led_brightness(lv_obj_t *led, uint8_t brightness)
{
    if (led != NULL)
    {
        lv_led_set_brightness(led, brightness);
    }
}

lv_obj_t *create_roller(lv_obj_t *parent, const char *options)
{
    lv_obj_t *roller = lv_roller_create(parent);
    if (options != NULL)
    {
        lv_roller_set_options(roller, options, LV_ROLLER_MODE_INIFINITE);
    }
    return roller;
}

void update_roller_options(lv_obj_t *roller, const char *options)
{
    if (roller != NULL && options != NULL)
    {
        lv_roller_set_options(roller, options, LV_ROLLER_MODE_INIFINITE);
    }
}

lv_obj_t *create_bar(lv_obj_t *parent, int32_t min, int32_t max)
{
    lv_obj_t *bar = lv_bar_create(parent);
    lv_bar_set_range(bar, min, max);
    return bar;
}

void set_bar_value(lv_obj_t *bar, int32_t value)
{
    if (bar != NULL)
    {
        lv_bar_set_value(bar, value, LV_ANIM_ON);
    }
}

lv_obj_t *create_canvas(lv_obj_t *parent)
{
    lv_obj_t *canvas = lv_canvas_create(parent);
    return canvas;
}

void set_canvas_size(lv_obj_t *canvas, lv_coord_t width, lv_coord_t height)
{
    if (canvas != NULL)
    {
        lv_canvas_set_buffer(canvas, lv_malloc(LV_CANVAS_BUF_SIZE_INDEXED_1BIT(width, height)), width, height, LV_IMG_CF_INDEXED_1BIT);
    }
}

lv_obj_t *create_keyboard(lv_obj_t *parent)
{
    lv_obj_t *keyboard = lv_keyboard_create(parent);
    return keyboard;
}

void set_keyboard_target(lv_obj_t *keyboard, lv_obj_t *target)
{
    if (keyboard != NULL)
    {
        lv_keyboard_set_textarea(keyboard, target);
    }
}



lv_obj_t *create_scrollable_label(lv_obj_t *parent)
{
    lv_obj_t *label = lv_label_create(parent);
    lv_label_set_text(label, "");             // 初始化为空文本
    lv_obj_set_width(label, LV_SIZE_CONTENT); // 根据内容调整宽度
    lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
    lv_obj_set_flex_grow(label, 1);
    return label;
}

void set_scrollable_label_text(lv_obj_t *scrollable_label, const char *text)
{
    if (scrollable_label != NULL && text != NULL)
    {
        lv_label_set_text(scrollable_label, text);
    }
}

lv_obj_t *create_toggle_btn(lv_obj_t *parent)
{
    lv_obj_t *btn = lv_btn_create(parent);
    lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE); // 设置为可选状态
    return btn;
}

bool get_toggle_btn_state(lv_obj_t *toggle_btn)
{
    if (toggle_btn != NULL)
    {
        return lv_obj_has_state(toggle_btn, LV_STATE_CHECKED);
    }
    return false;
}

void set_toggle_btn_state(lv_obj_t *toggle_btn, bool state)
{
    if (toggle_btn != NULL)
    {
        lv_obj_set_state(toggle_btn, state ? LV_STATE_CHECKED : 0);
    }
}

lv_obj_t *create_page(lv_obj_t *parent)
{
    lv_obj_t *page = lv_obj_create(parent);
    lv_obj_set_size(page, LV_PCT(100), LV_PCT(100));         // 默认全屏大小
    lv_obj_set_style_pad_all(page, 0, 0);                    // 设置内边距为0
    lv_obj_set_style_clip_corner(page, true, 0);             // 启用裁剪
    lv_obj_set_scrollbar_mode(page, LV_SCROLLBAR_MODE_AUTO); // 自动滚动条
    return page;
}

void set_page_scroll_dir(lv_obj_t *page, lv_dir_t dir)
{
    if (page != NULL)
    {
        lv_obj_set_scroll_dir(page, dir);
    }
}

lv_obj_t *create_popup_menu(lv_obj_t *parent, const char *title, const char **options)
{
    lv_obj_t *menu = lv_dropdown_create(parent);
    lv_dropdown_set_options_static(menu, options);
    lv_dropdown_set_text(menu, title);
    return menu;
}

void set_popup_menu_options(lv_obj_t *popup_menu, const char **options)
{
    if (popup_menu != NULL && options != NULL)
    {
        lv_dropdown_set_options_static(popup_menu, options);
    }
}

lv_anim_t *create_progress_bar_anim(lv_obj_t *progress_bar, int32_t start, int32_t end, uint32_t time, lv_anim_path_t *path)
{
    lv_anim_t *anim = lv_malloc(sizeof(lv_anim_t));
    lv_anim_init(anim);
    lv_anim_set_var(anim, progress_bar);
    lv_anim_set_values(anim, start, end);
    lv_anim_set_time(anim, time);
    lv_anim_set_path(anim, path);
    return anim;
}

void set_progress_bar_anim_path(lv_anim_t *anim, lv_anim_path_t *path)
{
    if (anim != NULL && path != NULL)
    {
        lv_anim_set_path(anim, path);
    }
}

lv_obj_t *create_volume_ctrl(lv_obj_t *parent)
{
    lv_obj_t *slider = lv_slider_create(parent);
    lv_slider_set_range(slider, 0, 100); // 默认范围0-100
    return slider;
}

void set_volume_ctrl_volume(lv_obj_t *volume_ctrl, int32_t volume)
{
    if (volume_ctrl != NULL)
    {
        lv_slider_set_value(volume_ctrl, volume, LV_ANIM_ON);
    }
}

lv_obj_t *create_data_table(lv_obj_t *parent, int row_cnt, int col_cnt)
{
    lv_obj_t *table = lv_table_create(parent);
    lv_table_set_row_cnt(table, row_cnt);
    lv_table_set_col_cnt(table, col_cnt);
    return table;
}

void set_data_table_cell_text(lv_obj_t *table, int row, int col, const char *text)
{
    if (table != NULL && text != NULL)
    {
        lv_table_set_cell_value(table, row, col, text);
    }
}

lv_obj_t *create_color_wheel(lv_obj_t *parent, bool wheel)
{
    lv_obj_t *colorwheel = lv_colorwheel_create(parent, wheel);
    return colorwheel;
}

lv_color_t get_color_wheel_color(lv_obj_t *color_wheel)
{
    if (color_wheel != NULL)
    {
        return lv_colorwheel_get_rgb(color_wheel);
    }
    return lv_color_black();
}

lv_obj_t *create_nav_bar(lv_obj_t *parent)
{
    lv_obj_t *nav_bar = lv_btnmatrix_create(parent);
    return nav_bar;
}

lv_obj_t *add_nav_bar_btn(lv_obj_t *nav_bar, const char *label, lv_event_cb_t cb)
{
    if (nav_bar != NULL)
    {
        lv_obj_t *btn = lv_btn_create(nav_bar);
        lv_obj_set_size(btn, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
        lv_obj_t *label_ptr = lv_label_create(btn);
        lv_label_set_text(label_ptr, label);
        lv_obj_add_event_cb(btn, cb, LV_EVENT_CLICKED, NULL);
        return btn;
    }
    return NULL;
}

lv_obj_t *create_calendar(lv_obj_t *parent)
{
    lv_obj_t *calendar = lv_calendar_create(parent);
    return calendar;
}

void set_calendar_date(lv_obj_t *calendar, int year, int month, int day)
{
    if (calendar != NULL)
    {
        lv_calendar_date_t date;
        date.year = year;
        date.month = month;
        date.day = day;
        lv_calendar_set_today_date(calendar, &date);
    }
}

lv_obj_t *create_time_picker(lv_obj_t *parent)
{
    lv_obj_t *time_picker = lv_roller_create(parent);
    return time_picker;
}

void get_time_picker_time(lv_obj_t *time_picker, int *hour, int *minute)
{
    if (time_picker != NULL && hour != NULL && minute != NULL)
    {
        char buf[10];
        lv_roller_get_selected_str(time_picker, buf, sizeof(buf));
        sscanf(buf, "%d:%d", hour, minute);
    }
}

lv_obj_t *create_tabview(lv_obj_t *parent)
{
    lv_obj_t *tabview = lv_tabview_create(parent, LV_DIR_TOP, 50);
    return tabview;
}

lv_obj_t *add_tabview_tab(lv_obj_t *tabview, const char *title)
{
    if (tabview != NULL && title != NULL)
    {
        return lv_tabview_add_tab(tabview, title);
    }
    return NULL;
}

lv_obj_t *create_info_popup(lv_obj_t *parent, const char *message)
{
    lv_obj_t *msgbox = lv_msgbox_create(parent, "Info", message, NULL, true);
    lv_obj_center(msgbox);
    return msgbox;
}

void show_info_popup(lv_obj_t *popup)
{
    if (popup != NULL)
    {
        lv_obj_clear_flag(popup, LV_OBJ_FLAG_HIDDEN);
    }
}

void hide_info_popup(lv_obj_t *popup)
{
    if (popup != NULL)
    {
        lv_obj_add_flag(popup, LV_OBJ_FLAG_HIDDEN);
    }
}

lv_obj_t *create_qr_code(lv_obj_t *parent, const char *text)
{
    lv_obj_t *qr = lv_qrcode_create(parent, 150, lv_color_hex3(0x000), lv_color_hex3(0xFFF));
    lv_qrcode_update(qr, text, strlen(text));
    return qr;
}

void update_qr_code(lv_obj_t *qr_code, const char *text)
{
    if (qr_code != NULL && text != NULL)
    {
        lv_qrcode_update(qr_code, text, strlen(text));
    }
}

lv_obj_t *create_message_box(lv_obj_t *parent, const char *title, const char *message)
{
    static const char *btns[] = {"OK", ""};
    lv_obj_t *msgbox = lv_msgbox_create(parent, title, message, btns, true);
    lv_obj_center(msgbox);
    return msgbox;
}

void show_message_box(lv_obj_t *msgbox)
{
    if (msgbox != NULL)
    {
        lv_obj_clear_flag(msgbox, LV_OBJ_FLAG_HIDDEN);
    }
}

void hide_message_box(lv_obj_t *msgbox)
{
    if (msgbox != NULL)
    {
        lv_obj_add_flag(msgbox, LV_OBJ_FLAG_HIDDEN);
    }
}

lv_obj_t *create_switch(lv_obj_t *parent)
{
    lv_obj_t *sw = lv_switch_create(parent);
    return sw;
}

void set_switch_state(lv_obj_t *sw, bool state)
{
    if (sw != NULL)
    {
        lv_obj_add_state(sw, state ? LV_STATE_CHECKED : 0);
    }
}

bool get_switch_state(lv_obj_t *sw)
{
    if (sw != NULL)
    {
        return lv_obj_has_state(sw, LV_STATE_CHECKED);
    }
    return false;
}

lv_obj_t *create_slider(lv_obj_t *parent, int32_t min, int32_t max)
{
    lv_obj_t *slider = lv_slider_create(parent);
    lv_slider_set_range(slider, min, max);
    return slider;
}

void set_slider_value(lv_obj_t *slider, int32_t value)
{
    if (slider != NULL)
    {
        lv_slider_set_value(slider, value, LV_ANIM_ON);
    }
}

int32_t get_slider_value(lv_obj_t *slider)
{
    if (slider != NULL)
    {
        return lv_slider_get_value(slider);
    }
    return 0;
}

lv_obj_t *create_wave_bar(lv_obj_t *parent)
{
    lv_obj_t *wave_bar = lv_bar_create(parent);
    return wave_bar;
}

void set_wave_bar_value(lv_obj_t *wave_bar, int32_t value)
{
    if (wave_bar != NULL)
    {
        lv_bar_set_value(wave_bar, value, LV_ANIM_ON);
    }
}

lv_obj_t *create_image(lv_obj_t *parent, const void *image_src)
{
    lv_obj_t *image = lv_img_create(parent);
    lv_img_set_src(image, image_src);
    return image;
}

void set_image_src(lv_obj_t *image, const void *image_src)
{
    if (image != NULL)
    {
        lv_img_set_src(image, image_src);
    }
}

lv_obj_t *create_checkbox(lv_obj_t *parent, const char *text)
{
    lv_obj_t *checkbox = lv_checkbox_create(parent);
    lv_checkbox_set_text(checkbox, text);
    return checkbox;
}

void set_checkbox_state(lv_obj_t *checkbox, bool state)
{
    if (checkbox != NULL)
    {
        lv_checkbox_set_state(checkbox, state ? LV_STATE_CHECKED : LV_STATE_DEFAULT);
    }
}

bool get_checkbox_state(lv_obj_t *checkbox)
{
    if (checkbox != NULL)
    {
        return lv_checkbox_is_checked(checkbox);
    }
    return false;
}

lv_obj_t *create_textarea(lv_obj_t *parent)
{
    lv_obj_t *textarea = lv_textarea_create(parent);
    lv_textarea_set_one_line(textarea, false);
    return textarea;
}

void set_textarea_placeholder(lv_obj_t *textarea, const char *placeholder)
{
    if (textarea != NULL)
    {
        lv_textarea_set_placeholder_text(textarea, placeholder);
    }
}

lv_obj_t *create_spinbox(lv_obj_t *parent, int32_t min, int32_t max)
{
    lv_obj_t *spinbox = lv_spinbox_create(parent);
    lv_spinbox_set_range(spinbox, min, max);
    return spinbox;
}

void set_spinbox_value(lv_obj_t *spinbox, int32_t value)
{
    if (spinbox != NULL)
    {
        lv_spinbox_set_value(spinbox, value);
    }
}

int32_t get_spinbox_value(lv_obj_t *spinbox)
{
    if (spinbox != NULL)
    {
        return lv_spinbox_get_value(spinbox);
    }
    return 0;
}

lv_obj_t *create_round_btn(lv_obj_t *parent, const char *text)
{
    lv_obj_t *btn = lv_btn_create(parent);
    lv_obj_set_style_radius(btn, LV_RADIUS_CIRCLE, 0);
    lv_obj_t *label = lv_label_create(btn);
    lv_label_set_text(label, text);
    return btn;
}

void set_round_btn_text(lv_obj_t *btn, const char *text)
{
    if (btn != NULL)
    {
        lv_obj_t *label = lv_obj_get_child(btn, 0);
        if (label != NULL && lv_obj_check_type(label, &lv_label_class))
        {
            lv_label_set_text(label, text);
        }
    }
}

lv_obj_t *create_picker(lv_obj_t *parent, const char *options)
{
    lv_obj_t *picker = lv_roller_create(parent);
    lv_roller_set_options(picker, options, LV_ROLLER_MODE_INIFINITE);
    return picker;
}

void set_picker_options(lv_obj_t *picker, const char *options)
{
    if (picker != NULL && options != NULL)
    {
        lv_roller_set_options(picker, options, LV_ROLLER_MODE_INIFINITE);
    }
}

lv_obj_t *create_card_view(lv_obj_t *parent)
{
    lv_obj_t *card_view = lv_obj_create(parent);
    lv_obj_set_flex_flow(card_view, LV_FLEX_FLOW_COLUMN);
    lv_obj_add_flag(card_view, LV_OBJ_FLAG_SCROLLABLE);
    return card_view;
}

lv_obj_t *add_card(lv_obj_t *card_view, const char *title, const char *text)
{
    if (card_view != NULL && title != NULL && text != NULL)
    {
        lv_obj_t *card = lv_obj_create(card_view);
        lv_obj_set_style_margin(card, 15, 0);
        lv_obj_set_style_padding(card, 10, 0);

        lv_obj_t *card_title = lv_label_create(card);
        lv_label_set_text(card_title, title);
        lv_obj_add_flag(card_title, LV_OBJ_FLAG_ALIGN_TOP);

        lv_obj_t *card_text = lv_label_create(card);
        lv_label_set_text(card_text, text);
        lv_obj_add_flag(card_text, LV_OBJ_FLAG_ALIGN_BOTTOM);

        return card;
    }
    return NULL;
}

lv_obj_t *create_tooltip(lv_obj_t *parent, const char *text)
{
    lv_obj_t *tooltip = lv_label_create(parent);
    lv_label_set_text(tooltip, text);
    lv_obj_set_style_bg_color(tooltip, lv_color_black(), 0);
    lv_obj_set_style_text_color(tooltip, lv_color_white(), 0);
    lv_obj_set_style_pad_all(tooltip, 5, 0);
    lv_obj_set_style_border_width(tooltip, 2, 0);
    lv_obj_set_style_radius(tooltip, 5, 0);
    lv_obj_set_style_bg_opa(tooltip, LV_OPA_70, 0);
    lv_obj_set_style_border_color(tooltip, lv_color_white(), 0);
    return tooltip;
}

void set_tooltip_text(lv_obj_t *tooltip, const char *text)
{
    if (tooltip != NULL && text != NULL)
    {
        lv_label_set_text(tooltip, text);
    }
}

lv_obj_t *create_list(lv_obj_t *parent)
{
    lv_obj_t *list = lv_list_create(parent);
    return list;
}

lv_obj_t *add_list_item(lv_obj_t *list, const char *text, lv_event_cb_t event_cb)
{
    if (list != NULL && text != NULL)
    {
        lv_obj_t *btn = lv_list_add_btn(list, NULL, text);
        lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL);
        return btn;
    }
    return NULL;
}

lv_obj_t *create_tabview(lv_obj_t *parent)
{
    return lv_tabview_create(parent, LV_DIR_TOP, 50);
}

lv_obj_t *add_tab(lv_obj_t *tabview, const char *title)
{
    if (tabview != NULL && title != NULL)
    {
        return lv_tabview_add_tab(tabview, title);
    }
    return NULL;
}

lv_obj_t *create_calendar(lv_obj_t *parent)
{
    lv_obj_t *calendar = lv_calendar_create(parent);
    return calendar;
}

void set_calendar_date(lv_obj_t *calendar, uint16_t year, uint8_t month, uint8_t day)
{
    if (calendar != NULL)
    {
        lv_calendar_date_t date;
        date.year = year;
        date.month = month;
        date.day = day;
        lv_calendar_set_today_date(calendar, &date);
        lv_calendar_set_showed_date(calendar, &date);
    }
}

lv_obj_t *create_anim_obj(lv_obj_t *parent)
{
    lv_obj_t *anim_obj = lv_obj_create(parent);
    return anim_obj;
}

void set_anim_properties(lv_obj_t *anim_obj, lv_coord_t start_x, lv_coord_t start_y, lv_coord_t end_x, lv_coord_t end_y, uint32_t duration)
{
    if (anim_obj == NULL)
        return;

    lv_anim_t a;
    lv_anim_init(&a);
    lv_anim_set_exec_cb(&a, anim_obj, (lv_anim_exec_xcb_t)lv_obj_set_x);
    lv_anim_set_values(&a, start_x, end_x);
    lv_anim_set_time(&a, duration);
    lv_anim_start(&a);

    lv_anim_set_exec_cb(&a, anim_obj, (lv_anim_exec_xcb_t)lv_obj_set_y);
    lv_anim_set_values(&a, start_y, end_y);
    lv_anim_set_time(&a, duration);
    lv_anim_start(&a);
}

lv_obj_t *create_keyboard(lv_obj_t *parent)
{
    lv_obj_t *keyboard = lv_keyboard_create(parent);
    return keyboard;
}

void set_keyboard_mode(lv_obj_t *keyboard, lv_keyboard_mode_t mode)
{
    if (keyboard != NULL)
    {
        lv_keyboard_set_mode(keyboard, mode);
    }
}

lv_obj_t *create_page_indicator(lv_obj_t *parent)
{
    lv_obj_t *indicator = lv_linear_create(parent);
    return indicator;
}

void set_page_indicator_page(lv_obj_t *page_indicator, uint16_t page)
{
    if (page_indicator != NULL)
    {
        lv_linear_set_active(page_indicator, page);
    }
}

lv_obj_t *create_pointer_lmeter(lv_obj_t *parent)
{
    lv_obj_t *lmeter = lv_linemeter_create(parent);
    return lmeter;
}

void set_pointer_value(lv_obj_t *pointer, int16_t value)
{
    if (pointer != NULL)
    {
        lv_linemeter_set_value(pointer, value);
    }
}

lv_obj_t *create_accelerometer_lmeter(lv_obj_t *parent)
{
    lv_obj_t *accelerometer = lv_linemeter_create(parent);
    return accelerometer;
}

void set_accelerometer_value(lv_obj_t *accelerometer, int16_t value)
{
    if (accelerometer != NULL)
    {
        lv_linemeter_set_value(accelerometer, value);
    }
}

lv_obj_t *create_clock(lv_obj_t *parent)
{
    lv_obj_t *clock = lv_obj_create(parent);
    return clock;
}

void set_clock_time(lv_obj_t *clock, int8_t hour, int8_t minute, int8_t second)
{
    if (clock != NULL)
    {
        // Custom implementation to set clock's hour, minute, and second
    }
}

lv_obj_t *create_progress_ring(lv_obj_t *parent, uint16_t max_value)
{
    lv_obj_t *ring = lv_ringmeter_create(parent);
    lv_ringmeter_set_range(ring, 0, max_value);
    return ring;
}

void update_progress_ring(lv_obj_t *progress_ring, uint16_t value)
{
    if (progress_ring != NULL)
    {
        lv_ringmeter_set_value(progress_ring, value);
    }
}

lv_obj_t *create_color_picker(lv_obj_t *parent)
{
    lv_obj_t *color_picker = lv_colorwheel_create(parent, true);
    return color_picker;
}

lv_color_t get_color_picker_color(lv_obj_t *color_picker)
{
    if (color_picker != NULL)
    {
        return lv_colorwheel_get_rgb(color_picker);
    }
    return lv_color_black();
}

lv_obj_t *create_gauge(lv_obj_t *parent, int32_t min, int32_t max)
{
    lv_obj_t *gauge = lv_gauge_create(parent);
    lv_gauge_set_range(gauge, min, max);
    return gauge;
}

void set_gauge_value(lv_obj_t *gauge, int32_t value)
{
    if (gauge != NULL)
    {
        lv_gauge_set_value(gauge, 0, value); // Assuming first needle
    }
}

lv_obj_t *create_separator(lv_obj_t *parent)
{
    lv_obj_t *separator = lv_obj_create(parent);
    return separator;
}

void set_separator_direction(lv_obj_t *separator, lv_dir_t dir)
{
    if (separator != NULL)
    {
        lv_obj_set_size(separator, (dir == LV_DIR_HOR) ? LV_PCT(100) : 2, (dir == LV_DIR_HOR) ? 2 : LV_PCT(100));
    }
}

lv_obj_t *create_select_switch(lv_obj_t *parent, const char *options)
{
    lv_obj_t *select_switch = lv_roller_create(parent);
    lv_roller_set_options(select_switch, options, LV_ROLLER_MODE_NORMAL);
    return select_switch;
}

void set_select_switch_options(lv_obj_t *select_switch, const char *options)
{
    if (select_switch != NULL)
    {
        lv_roller_set_options(select_switch, options, LV_ROLLER_MODE_NORMAL);
    }
}

lv_obj_t *create_task_done(lv_obj_t *parent)
{
    lv_obj_t *task_done = lv_obj_create(parent);
    lv_obj_add_flag(task_done, LV_OBJ_FLAG_HIDDEN); // Initially hidden
    return task_done;
}

void set_task_done_status(lv_obj_t *task_done, bool done)
{
    if (task_done != NULL)
    {
        if (done)
        {
            lv_obj_clear_flag(task_done, LV_OBJ_FLAG_HIDDEN);
        }
        else
        {
            lv_obj_add_flag(task_done, LV_OBJ_FLAG_HIDDEN);
        }
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值