lvgl8.1创建一个滑块,添加在滑动停止但不松开一段时间触发事件
时间: 2024-12-02 15:20:24 浏览: 12
LVGL(LittlevGL)是一个轻量级、跨平台的图形库,用于嵌入式设备的GUI开发。在LVGL v8.1中,你可以使用`lv_slider`组件创建滑块,结合`lv_event_cb`函数来设置滑动结束后的延迟回调。以下是简单的步骤:
1. 首先,需要包含必要的头文件并初始化LVGL:
```c
#include "lvgl.h"
LVGL_INIT()
// ...
lv_obj_t * scr = lv_scr_create(); // 创建屏幕对象
```
2. 创建滑块:
```c
lv_slider_t * slider = lv_slider_create(scr, NULL); // 参数为屏幕对象
lv_obj_set_size(slider, LV_HOR_RES, LV_SLIDER_DEFAULT_SIZE); // 设置滑块尺寸
```
3. 设置滑块的基本属性,如滑块范围等。
4. 添加滑动结束后的回调函数,并设置一个延时生效的时间:
```c
void handle_stop(lv_obj_t * obj, lv_event_t event) {
if (event == LV_EVENT_VALUE_CHANGED) { // 只处理滑动结束事件
/* 在这里添加你的滑动停止操作 */
lv_task_create(handle_delayed_action, 0, NULL); // 任务队列中延迟执行动作
}
}
static void handle_delayed_action(void * param) {
static bool triggered = false; // 标记是否已触发过
if (!triggered && !lv_task_get_current()) { // 检查是否在滑动期间触发了另一个延迟操作
triggered = true;
/* 执行滑动停止后应立即发生的任务,例如发送数据到服务器 */
// ...
// 清除延迟操作,防止连续触发
triggered = false;
lv_task_del(handle_delayed_action);
}
}
lv_event_cb_t stop_event_cb = handle_stop; // 定义滑动停止事件回调
lv_obj_set_event_cb(slider, stop_event_cb, LV_EVENT_VALUE_CHANGED);
// 设置滑动停止后延迟生效时间(单位:毫秒)
int delay_ms = 500;
lv_task_enable_once(handle_delayed_action, delay_ms);
```
阅读全文