- switch开关回调处理函数
static void swithc_event_handler(lv_obj_t* obj, lv_event_t event) { if (event == LV_EVENT_VALUE_CHANGED) { printf("state:%s\n", lv_sw_get_state(obj) ? "on" : "off"); } }
- switch开关实现
void switch_button_demo(void) { /*Create styles for the switch*/ static lv_style_t bg_style; static lv_style_t indic_style; static lv_style_t knob_on_style; static lv_style_t knob_off_style; lv_style_copy(&bg_style, &lv_style_pretty); bg_style.body.radius = LV_RADIUS_CIRCLE; bg_style.body.padding.top = 6; bg_style.body.padding.bottom = 6; bg_style.body.main_color = LV_COLOR_RED; bg_style.body.grad_color = LV_COLOR_RED; lv_style_copy(&indic_style, &lv_style_pretty_color); indic_style.body.radius = LV_RADIUS_CIRCLE; indic_style.body.main_color = indic_style.body.grad_color = LV_COLOR_GREEN; indic_style.body.padding.left = 0; indic_style.body.padding.right = 0; indic_style.body.padding.top = 0; indic_style.body.padding.bottom = 0; lv_style_copy(&knob_off_style, &lv_style_pretty); knob_off_style.body.radius = LV_RADIUS_CIRCLE; knob_off_style.body.shadow.width = 4; knob_off_style.body.shadow.type = LV_SHADOW_BOTTOM; knob_off_style.body.main_color = knob_off_style.body.grad_color = LV_COLOR_BLUE; lv_style_copy(&knob_on_style, &lv_style_pretty_color); knob_on_style.body.radius = LV_RADIUS_CIRCLE; knob_on_style.body.shadow.width = 4; knob_on_style.body.shadow.type = LV_SHADOW_BOTTOM; knob_on_style.body.main_color = knob_on_style.body.grad_color = LV_COLOR_BLUE; /*Create a switch and apply the styles*/ lv_obj_t *sw1 = lv_sw_create(lv_scr_act(), NULL); lv_sw_set_style(sw1, LV_SW_STYLE_BG, &bg_style); lv_sw_set_style(sw1, LV_SW_STYLE_INDIC, &indic_style); lv_sw_set_style(sw1, LV_SW_STYLE_KNOB_OFF, &knob_off_style); lv_sw_set_style(sw1, LV_SW_STYLE_KNOB_ON, &knob_on_style); lv_obj_set_width(sw1, 80); lv_obj_align(sw1, NULL, LV_ALIGN_CENTER, 0, -50); lv_obj_set_event_cb(sw1, swithc_event_handler); }
- 调用switch_button_demo函数,编译运行