一、设置属性
设置对象的属性通过一个函数传入不同的参数来实现
lv_obj_add/clear_flag(obj,LV_OBJ_FLAG...)
FLAG分类:
LV_OBJ_FLAG_HIDDEN 隐藏对象。 (就像它根本不存在一样)
LV_OBJ_FLAG_CLICKABLE 使输入设备可点击对象
LV_OBJ_FLAG_CLICK_FOCUSABLE 单击时将焦点状态添加到对象
LV_OBJ_FLAG_CHECKABLE 对象被点击时切换选中状态
LV_OBJ_FLAG_SCROLLABLE 使对象可滚动
LV_OBJ_FLAG_SCROLL_ELASTIC 允许在内部滚动但速度较慢
LV_OBJ_FLAG_SCROLL_MOMENTUM 在“抛出”时使对象滚动得更远
LV_OBJ_FLAG_SCROLL_ONE 只允许滚动一个可捕捉的孩子
LV_OBJ_FLAG_SCROLL_CHAIN 允许将滚动传播到父级
LV_OBJ_FLAG_SCROLL_ON_FOCUS 自动滚动对象以使其在聚焦时可见
LV_OBJ_FLAG_SNAPPABLE 如果在父对象上启用了滚动捕捉,它可以捕捉到这个对象
LV_OBJ_FLAG_PRESS_LOCK 保持对象被按下,即使按下从对象上滑动
LV_OBJ_FLAG_EVENT_BUBBLE 也将事件传播给父级
LV_OBJ_FLAG_GESTURE_BUBBLE 将手势传播给父级
LV_OBJ_FLAG_ADV_HITTEST 允许执行更准确的命中(点击)测试。例如。考虑圆角。
LV_OBJ_FLAG_IGNORE_LAYOUT 使对象可以通过布局定位
LV_OBJ_FLAG_FLOATING 父滚动时不滚动对象,忽略布局
LV_OBJ_FLAG_LAYOUT_1 自定义标志,可供布局免费使用
LV_OBJ_FLAG_LAYOUT_2 自定义标志,可供布局免费使用
LV_OBJ_FLAG_WIDGET_1 自定义标志,小部件免费使用
LV_OBJ_FLAG_WIDGET_2 自定义标志,小部件免费使用
LV_OBJ_FLAG_USER_1 自定义标志,用户免费使用
LV_OBJ_FLAG_USER_2 自定义标志,用户免费使用
LV_OBJ_FLAG_USER_3 自定义标志,用户免费使用
LV_OBJ_FLAG_USER_4 自定义标志,由用户部分免费使用。
示例:
lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN);//隐藏对象
lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICKABLE);//设置对象不可点击
二、样式
lvgl8的样式更加的方便,分为普通样式和本地样式,
普通样式和之前的一样,都要先定义在设置,
本地样式不用,直接对obj的默认样式进行更改,
样式创建出来通过lv_style_init(&style);初始化
样式的设置都是同个函数实现的,不同于之前的结构体赋值
例如:lv_style_set_XXX(&style,value);
本地样式函数:lv_obj_set_style_xxx(obj,value,select);
给目标设置样式函数:lv_obj_add_style(obj,&style,selector);
para_3是obj的状态例如默认是0,就是默认状态,也称为部分(path)
LV_STATE_PRESSED是按下时的状态,就是obj按下时的样式设置
新增了样式过渡,
lvgl8的样式改变的还是很大的,而且更加方便了,尤其是本地样式,直接改变空间的默认样式,不需要占用额外的空间保存样式了。
三、图片按钮
lvgl8的图片按钮好像只能是设置三种图片源的那种创建,只有一种的我没找到他的函数
通过样式过渡,用一张图片就简单实现的之前的图片按钮的按下情景
添加事件
lv_obj_add_event_cb(obj, my_event_cb_1, LV_EVENT_CLICKED, user_para);
lv_obj_add_event_cb(obj, my_event_cb_2, LV_EVENT_PRESSED, NULL);
lv_obj_add_event_cb(obj, my_event_cb_3, LV_EVENT_ALL, NULL);
lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num1);
lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num2);
事件的回调函数参数只有event一个了,但是可以再内部调用函数判断obj
static void imgbtn_first_cb(lv_event_t* event);//参数不是指针类型会有warning
可以在事件回调函数中获取发生事件的obj = lv_event_get_target(event);
lv_event_t //是传递给事件回调的唯一参数,它包含有关事件的所有数据。可以从中获得以下值:
lv_event_get_code(e) //获取触发的事件代码
lv_event_get_target(e) //获取事件发送到(关联)的对象
lv_event_get_original_target(e) //获取事件最初发送到的对象(与 lv_event_get_target 不同,如果 event bubbling 被启用)
lv_event_get_user_data(e) //获取作为lv_obj_add_event_cb的最后一个参数传递的指针。
lv_event_get_param(e) //获取作为lv_event_send的最后一个参数传递的参数
添加事件不能用与操作,要另外写一次函数