前言:学习LVGL的过程中,常常知道有这个命令,也知道大概怎么用。但总想不起来命令叫什么,在整个库中找也显得麻烦,搞得每次写程序还要翻之前的Demo

所以在这里将学习过程中用到的命令 存放在这里,方便再使用的时候方便的找到命令名字。


<!-- 新建obj  父对象是活动的屏幕 -->
lv_obj_t * obj = lv_obj_create(lv_scr_act());

<!-- 设置obj大小 -->
lv_obj_set_size(obj, LV_PCT(50), LV_PCT(10));

<!-- obj对齐 加偏移 -->
lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);
<!-- obj对齐 -->
lv_obj_set_align(obj,LV_ALIGN_CENTER);
<!-- 与参考物对齐 -->
lv_obj_align_to(label, obj, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);


<!-- 获取obj 参数 -->
lv_obj_get_width(obj);
lv_obj_get_height(obj);

<!-- aline 直接屏幕居中 -->
lv_obj_center(obj);





<!-- 新建 lable -->

lv_obj_t * label = lv_label_create(obj);
<!-- 设置lable text -->
lv_label_set_text(label, "Hello, LVGL!");
<!-- 设置lable text -->
lv_label_set_text_fmt(obj, "%s: %d", "Value", value);



<!-- 新建 button -->

lv_obj_t * btn0 = lv_btn_create(lv_scr_act());
<!-- 当对象被点击时有选中切换(Toggle)状态的效果 -->
lv_obj_add_flag(btn0 , LV_OBJ_FLAG_CHECKABLE);
lv_obj_add_event_cb(btn0 , btn_toggle_event_cb, LV_EVENT_VALUE_CHANGED, NULL);


<!-- 新建 switch -->
lv_obj_t * sw = lv_switch_create(lv_scr_act());
<!-- 设置开关状态 -->
lv_obj_add_state(sw, LV_STATE_CHECKED);
<!-- 设置开关状态 且不可更改 -->
lv_obj_add_state(sw, LV_STATE_CHECKED | LV_STATE_DISABLED);
<!-- 清除禁用 -->
lv_obj_clear_state(sw, LV_STATE_ DISABLED);

<!-- 检测是否含有某状态 -->
lv_obj_has_state(sw, LV_STATE_CHECKED)





<!-- 新建checkbox -->
lv_obj_t * cb = lv_checkbox_create(lv_scr_act());
<!-- 设置文字 -->
lv_checkbox_set_text(cb, "100ASK LVGL Tutorial");





<!-- 设置需要响应的事件 -->
lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);
<!-- 设置obj回调 -->
lv_obj_add_event_cb(label, label_event_cb, LV_EVENT_ALL, 0);


<!-- ===================================分割线====================================== -->

<!-- 直接对obj style设置 -->

<!-- 设置内边框 边框占用按钮内部的地方 -->
lv_obj_set_style_border_width(obj, 10, 0);
<!-- 设置外边框 边框占用按钮外部 -->
lv_obj_set_style_outline_width(obj, 10, 0);

<!-- 使用其他字号的字体,如果不设置默认使用 lv_font_montserrat_14 ,在 lv_conf.h 中 LV_FONT_DEFAULT 定义 -->
lv_obj_set_style_text_font(label, &lv_font_montserrat_28, 0);




<!-- style 单独 设置 -->

<!-- 初始化 style -->
lv_style_init(&style_main);
<!-- 透明度 -->
lv_style_set_bg_opa(&style_main, LV_OPA_COVER);
<!-- 背景颜色 -->
lv_style_set_bg_color(&style_main, lv_color_hex3(0xbbb));
<!-- 倒角 -->
lv_style_set_radius(&style_main, LV_RADIUS_CIRCLE);
<!-- 垂直pad 外垫 -->
lv_style_set_pad_ver(&style_main, -2); /*Makes the indicator larger*/
lv_style_set_pad_hor
lv_style_set_pad_all
lv_style_set_border_width(&style_knob, 2);


<!-- 使用按键控制 -->
<!-- 创建一个组 -->
lv_group_t * g = lv_group_create();
<!-- 将按钮 或者其他 添加到组中 -->
lv_group_add_obj(g, btn1);
<!-- 将组对象和鼠标设备连接 -->
lv_indev_set_group(lv_win32_encoder_device_object, g);
<!-- 将组对象键盘设备连接 -->
lv_indev_set_group(lv_win32_keypad_device_object, g);



<!-- ===================================分割线====================================== -->


<!-- 设置动画过度 -->
一、
    <!-- 要过度的对象, 必须以0结尾 -->
    static const lv_style_prop_t props[] = {LV_STYLE_BG_COLOR, 0};
    <!-- 初始化一个动画 -->
    static lv_style_transition_dsc_t transition_dsc;
    <!-- 动画的结构体 要动画变化的特征 是 LV_STYLE_BG_COLOR -->
    lv_style_transition_dsc_init(&transition_dsc, props, lv_anim_path_linear, 500, 30, NULL);
二、
    <!-- 新建style 一个是未按下用的  一个是按下用的 -->
    static lv_style_t style1;
    static lv_style_t style_pressed_color;
    <!-- 连接style 和 动画过渡 -->
    lv_style_set_transition(&style1, &transition_dsc);
三、
    <!-- 设置obj 未触发时的style 以及 按下时的style -->
    lv_obj_add_style(obj, &style1, LV_PART_KNOB);
    lv_obj_add_style(obj, &style_pressed_color, LV_PART_KNOB | LV_STATE_PRESSED);


<!-- 删除通过本地样式(私有样式)设置的背景色 -->
lv_obj_remove_local_style_prop(obj, LV_STYLE_BG_COLOR, 0);

<!-- ===================================分割线====================================== -->


<!-- 事件冒泡 -->

<!-- 创建obj2、父对象是obj1 -->
lv_obj_t * obj2 = lv_obj_create(obj1);
<!-- 设置 启用冒泡事件 -->
lv_obj_add_flag(obj2, LV_OBJ_FLAG_EVENT_BUBBLE);

<!-- 设置回调 -->

<!-- obj1的回调、回调函数为my_event_cb、事件为LV_EVENT_ALL、需要传递的用户参数为label -->
lv_obj_add_event_cb(obj1, my_event_cb, LV_EVENT_ALL, label);

<!-- 回调函数写法 -->
static void my_event_cb(lv_event_t * e)
{
    <!-- 获取触发事件的对象 -->
    lv_obj_t * obj = lv_event_get_target(e);
    <!-- 获取触发事件对象的父对象(事件冒泡才有) -->
    lv_obj_t * parent = lv_event_get_current_target(e);
    <!-- 获取当前部件触发的事件代码 -->
    lv_event_code_t code = lv_event_get_code(e);
    <!-- 获取添加事件时传递的用户数据 -->
    lv_obj_t * label = lv_event_get_user_data(e);
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐