使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十二讲)
(1) 下拉框的信号
下拉框的通用信号如下图所示:
以下是对信号的说明:
Clicked: 如果没有被滚动,在释放时被调用(与长按无关)。
Short Clicked: 对象被按下一小段时间,然后释放。如果被滚动,则不会被调用。
Pressed: 对象已被按下。
Pressing: 对象正在被按下(在按下期间持续调用)。
Press Lost: 对象仍在被按下,但滑动光标/手指离开对象。
Released: 在任何对象释放时被调用。
Value Changed: 对象的值已更改(例如,滑块移动)。
Long Pressed: 对象至少被按下long_press_time
。如果被滚动,则不会被调用。
Long Pressed Repeat: 在每long_press_repeat_time
(长按重复时间)毫秒后,调用一次。如果被滚动,则不会被调用。
Scroll: 滚动中。
Scroll Begin: 滚动开始。事件参数是滚动动画的指针,可以被修改。
Scroll End: 滚动结束。
Focused: 对象获得焦点。
Defocused: 对象失去焦点。
Leave: 输入设备离开对象上方的悬停状态。
Hit Test: 执行高级点击测试。
Key: 将键发送给对象,用lv_indev_get_key(lv_indev_active());获取键值。
除此之外,下拉框有特有的三个信号分别是:
• LV_EVENT_VALUE_CHANGED 在选择新选项或打开/关闭列表时发送。
• LV_EVENT_CANCEL 列表关闭时发送
• LV_EVENT_READY 打开列表时发送
(2) 下拉框的回调函数
添加信号value_changed,设置回调为自定义函数,具体如图所示:
以下是回调的代码:
static void screen_1_ddlist_1_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code) {
case LV_EVENT_VALUE_CHANGED:
{
//获取用户选择的下拉选项,用来进行区分
uint16_t id = lv_dropdown_get_selected(guider_ui.screen_1_ddlist_1);
break;
}
default:break;
}
}
//设置回调函数声明
void events_init_screen_1 (lv_ui *ui)
{
lv_obj_add_event_cb(ui->screen_1_ddlist_1, screen_1_ddlist_1_event_handler, LV_EVENT_ALL, ui);
}
(3) 下拉框的常用函数
[1] 创建下拉框
lv_obj_t * lv_dropdown_create(lv_obj_t * parent, const lv_obj_t * copy);
parent:父对象,即下拉框要添加到的容器。
copy:可以是另一个已存在的下拉框对象,用于复制其属性(如果需要)。
[2] 设置下拉框选项
void lv_dropdown_set_options(lv_obj_t * dropdown, const char * options);
dropdown:下拉框对象。
options:选项字符串,每个选项用 \n 分隔。
[3] 获取当前选项
int32_t lv_dropdown_get_selected(lv_obj_t * dropdown);
返回值:当前选中的选项的索引(从 0 开始),如果没有选中任何项,则返回 LV_DROPDOWN_RESULT_NONE。
[4] 设置选中的选项
void lv_dropdown_set_selected(lv_obj_t * dropdown, uint16_t index);
dropdown:下拉框对象。
index:选项的索引(从 0 开始)。
[5] 获取下拉框文本
const char * lv_dropdown_get_selected_text(lv_obj_t * dropdown);
返回值:当前选中项的文本字符串。
下一期讲其他控件的基础使用。
本文章由威三学社出品
对课程感兴趣可以私信联系