当前位置: 首页 > java >正文

使用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);

返回值:当前选中项的文本字符串。

下一期讲其他控件的基础使用。
本文章由威三学社出品
对课程感兴趣可以私信联系

http://www.xdnf.cn/news/5813.html

相关文章:

  • (2)python开发经验
  • 下周,Coinbase将被纳入标普500指数
  • windows c++ (9) 程序内注册服务并修改登录账户
  • 使用 `aiohttp` 构建高效的异步网络爬虫系统
  • 一次讲清 FP32 / FP16 / BF16 / INT8 / INT4
  • VR和眼动控制集群机器人的方法
  • 青少年编程与数学 02-019 Rust 编程基础 10课题、函数、闭包和迭代器
  • 机器学习中分类模型的常用评价指标
  • 设计模式系列(03):设计原则(二):DIP、ISP、LoD
  • SpringBoot与Eventuate Tram整合 - 实现转账最终一致性系统
  • 解锁生命周期评价密码:OpenLCA、GREET 与 R 语言的融合应用
  • 基于 Amazon Bedrock 和 Amazon Connect 打造智能客服自助服务 – 设计篇
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • Java Solon v3.3.0 发布(国产优秀应用开发基座)
  • Spring Boot Swagger 安全防护全解析:从旧版实践到官方规范
  • Spring Boot 跨域问题全解:原理、解决方案与最佳实践
  • Tomcat和Nginx的主要区别
  • 【MySQL】第三弹——表的CRUD进阶(一)数据库约束
  • 地址簿模块-01.需求分析
  • D-Pointer(Pimpl)设计模式(指向实现的指针)
  • 在VSCode中接入DeepSeek的指南
  • 【时时三省】(C语言基础)使用字符串处理函数
  • 基于Spring Boot+Layui构建企业级电子招投标系统实战指南
  • 人脸识别系统中的隐私与数据权利保障
  • ‌OPE.AI开放平台:一站式企业AI应用引擎
  • 前端学习(2)—— CSS详解与使用
  • centos7.x下,使用宝塔进行主从复制的原理和实践
  • 博客系统技术需求文档(基于 Flask)
  • R语言绘图 | 渐变火山图
  • Leetcode 3548. Equal Sum Grid Partition II