目录
开关看起来像一个小滑块,功能类似于按钮,通过lv_switch_create创建对应的对象。
obj1 = lv_switch_create(lv_scr_act());
lv_obj_align(obj1, LV_ALIGN_CENTER, 0, 0);
1. Parts
包括以下三个部件:LV_PART_MAIN、LV_PART_INDICATOR和LV_PART_KNOB。
lv_obj_set_style_bg_color(obj1, lv_color_hex(0xff0000), LV_PART_MAIN);
lv_obj_set_style_bg_color(obj1, lv_color_hex(0x00ff00), LV_PART_INDICATOR | LV_STATE_CHECKED);
lv_obj_set_style_bg_color(obj1, lv_color_hex(0x0000ff), LV_PART_KNOB);
2. 状态
和复选框类似,主要有LV_STATE_DISABLED和LV_STATE_CHECKED。
2.1 获取当前状态
lv_obj_has_state(switch, LV_STATE_CHECKED); // 返回 bool 类型, 开-1 ; 关-2
2.2 设置开状态
lv_obj_add_state(switch, LV_STATE_CHECKED); // 开
2.3 设置关状态
lv_obj_clear_state(switch, LV_STATE_CHECKED); // 关
2.4 设置Disable状态
lv_obj_add_state(switch, LV_STATE_DISABLED);
2.5 设置Enable状态
lv_obj_clear_state(switch, LV_STATE_ DISABLED);
3. 事件
当开关被点击并且状态发生改变时,会触发 LV_EVENT_VALUE_CHANGED
事件类型。
3.1 设置事件回调函数
lv_obj_add_event_cb(obj1, switch_event_handler, LV_EVENT_ALL, NULL);
3.2 回调函数
static void switch_event_handler(lv_event_t* e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t* obj = lv_event_get_target(e);
if (code == LV_EVENT_VALUE_CHANGED) {
LV_LOG_USER("State: %s\n", lv_obj_has_state(obj, LV_STATE_CHECKED) ? "On" : "Off");
}
}