12_Arduino-ESP32_LVGL_开关,滑块,图片按钮

2,072 阅读1分钟

1_开关


#include "config.h"

TTGOClass *ttgo;

static lv_obj_t * label_text;

static void event_handler(lv_obj_t * obj, lv_event_t event)
{
    if(event == LV_EVENT_VALUE_CHANGED) {

       if(lv_switch_get_state(obj)){
           lv_label_set_text_fmt(label_text, "ON");
       }else{
           lv_label_set_text_fmt(label_text, "OFF");
       }

    }

}

void lv_ex_switch_1(void)
{

    label_text = lv_label_create(lv_scr_act(), NULL);
    lv_label_set_text(label_text, "OFF");
    lv_obj_set_auto_realign(label_text, true);
    lv_obj_align(label_text,NULL, LV_ALIGN_CENTER, -50,-50);
    
    lv_obj_t *sw1 = lv_switch_create(lv_scr_act(), NULL);
    lv_obj_align(sw1, NULL, LV_ALIGN_CENTER, 0, -50);
    lv_obj_set_event_cb(sw1, event_handler);

}

void setup()
{
    Serial.begin(115200);
    ttgo = TTGOClass::getWatch();
    ttgo->begin();
    ttgo->openBL();
    ttgo->lvgl_begin();
    lv_ex_switch_1();
}

void loop()
{
    lv_task_handler();
    delay(5);
}

2_滑块


#include "config.h"

TTGOClass *ttgo;

static lv_obj_t * label_text;

static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
{
    if(event == LV_EVENT_VALUE_CHANGED) {
        lv_label_set_text_fmt(label_text, "%d",lv_slider_get_value(slider));
    }
}

void lv_ex_slider_1(void)
{
    label_text = lv_label_create(lv_scr_act(), NULL);
    lv_label_set_text(label_text, "0");
    lv_obj_set_auto_realign(label_text, true);
    lv_obj_align(label_text,NULL, LV_ALIGN_CENTER, 0,20);

    lv_obj_t * slider = lv_slider_create(lv_scr_act(), NULL);
    lv_obj_set_width(slider,200);
    lv_obj_align(slider, NULL, LV_ALIGN_CENTER, 0, 0);
    lv_obj_set_event_cb(slider, slider_event_cb);
    lv_slider_set_range(slider, 0, 100);
}

void setup()
{
    Serial.begin(115200);
    ttgo = TTGOClass::getWatch();
    ttgo->begin();
    ttgo->openBL();
    ttgo->lvgl_begin();
    lv_ex_slider_1();
}

void loop()
{
    lv_task_handler();
    delay(5);
}

3_图片按钮


#include "config.h"

TTGOClass *ttgo;
static lv_obj_t * label;

int text_value=0;

static void event_handler(lv_obj_t *obj, lv_event_t event)
{
    if (event == LV_EVENT_CLICKED) {
        lv_label_set_text_fmt(label, "%d",++text_value);
    }
}

void lv_ex_imgbtn_1(void)
{
    LV_IMG_DECLARE(wifi);

    static lv_style_t style;
    lv_style_init(&style);
    lv_style_set_image_recolor_opa(&style, LV_STATE_PRESSED, LV_OPA_30);
    lv_style_set_image_recolor(&style, LV_STATE_PRESSED, LV_COLOR_BLACK);
    lv_style_set_text_color(&style, LV_STATE_DEFAULT, LV_COLOR_BLACK);

    lv_obj_t * imgbtn1 = lv_imgbtn_create(lv_scr_act(), NULL);
    lv_imgbtn_set_src(imgbtn1, LV_BTN_STATE_RELEASED, &wifi);
    lv_imgbtn_set_src(imgbtn1, LV_BTN_STATE_PRESSED, &wifi);
    lv_imgbtn_set_src(imgbtn1, LV_BTN_STATE_CHECKED_RELEASED, &wifi);
    lv_imgbtn_set_src(imgbtn1, LV_BTN_STATE_CHECKED_PRESSED, &wifi);
    lv_imgbtn_set_checkable(imgbtn1, true);
    lv_obj_set_event_cb(imgbtn1,event_handler);
    lv_obj_add_style(imgbtn1, LV_IMGBTN_PART_MAIN, &style);
    lv_obj_align(imgbtn1, NULL, LV_ALIGN_CENTER, 0,0);

    label = lv_label_create(lv_scr_act(), NULL);
    lv_label_set_text(label, "0");
    lv_obj_set_auto_realign(label, true);
    lv_obj_align(label,NULL,LV_ALIGN_CENTER, 0,-55);

}

void setup()
{
    Serial.begin(115200);
    ttgo = TTGOClass::getWatch();
    ttgo->begin();
    ttgo->openBL();
    ttgo->lvgl_begin();
    lv_ex_imgbtn_1();
}

void loop()
{
    lv_task_handler();
    delay(5);
}