switch button for little vGL

  • 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函數,編譯運行

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章