前言:学习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);
<!-- 新建 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);
<!-- ===================================分割线====================================== -->
<!-- 设置动画过度 -->
一、
<!-- 要过度的对象, 必须以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);
}