1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "lvgl/lvgl.h"

typedef enum {
STATE_IDLE,
STATE_PRESSED,
STATE_RELEASED
} SliderState;

static SliderState state = STATE_IDLE;

static void slider_event_cb(lv_event_t *e) {
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t *slider = lv_event_get_target(e);

switch (state) {
case STATE_IDLE:
if (code == LV_EVENT_PRESSED) {
state = STATE_PRESSED;
LV_LOG_USER("Slider pressed");
}
break;
case STATE_PRESSED:
if (code == LV_EVENT_RELEASED) {
state = STATE_RELEASED;
LV_LOG_USER("Slider released");
}
break;
case STATE_RELEASED:
// if (code == LV_EVENT_PRESS_LOST || code == LV_EVENT_LEAVE) {
state = STATE_IDLE;
// }
break;
}

if (code == LV_EVENT_VALUE_CHANGED) {
// 处理值变化事件
LV_LOG_USER("Slider value changed: %d", lv_slider_get_value(slider));
}
}