LVGL-开关部件
- ■ LVGL-开关部件
- ■ 开关部件:指示器打开的颜色
- ■ 开关部件:不可修改
- ■ 开关部件:获取开关状态
- ■ 开关部件:示例一:制冷,制暖,开关
■ LVGL-开关部件
■ 开关部件:指示器打开的颜色
■ 开关部件:不可修改
■ 开关部件:获取开关状态
■ 开关部件:示例一:制冷,制暖,开关
/* 获取当前活动屏幕的宽高 */
#define scr_act_width() lv_obj_get_width(lv_scr_act())
#define scr_act_height() lv_obj_get_height(lv_scr_act())
static lv_obj_t *switch_cool; /* 制冷模式开关 */
static lv_obj_t *switch_heat; /* 制暖模式开关 */
static lv_obj_t *switch_dry; /* 干燥模式开关 */
static const lv_font_t *font; /* 定义字体 */
/**
* @brief 回调事件
* @param *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void switch_event_cb(lv_event_t *e)
{
lv_obj_t *target = lv_event_get_target(e); /* 获取触发源 */
if(target == switch_cool) /* 制冷开关触发 */
{
if(lv_obj_has_state(switch_cool, LV_STATE_CHECKED)) /* 判断开关状态 */
{
lv_obj_clear_state(switch_heat, LV_STATE_CHECKED); /* 制冷模式已打开,关闭制暖模式 */
}
}
else if(target == switch_heat) /* 制暖开关触发 */
{
if(lv_obj_has_state(switch_heat, LV_STATE_CHECKED)) /* 判断开关状态 */
{
lv_obj_clear_state(switch_cool, LV_STATE_CHECKED); /* 制暖模式已打开,关闭制冷模式 */
}
}
}
/**
* @brief 制冷功能开关
* @param 无
* @return 无
*/
static void lv_example_switch1(void)
{
/* 制冷模式基础对象(矩形背景) */
lv_obj_t *obj_cool = lv_obj_create(lv_scr_act()); /* 创建基础对象 */
lv_obj_set_size(obj_cool,scr_act_height() / 3, scr_act_height() / 3 ); /* 设置大小 */
lv_obj_align(obj_cool, LV_ALIGN_CENTER, -scr_act_width() / 4, 0 ); /* 设置位置 */
/* 制冷模式开关标签 */
lv_obj_t *label_cool = lv_label_create(obj_cool); /* 创建标签 */
lv_label_set_text(label_cool, "Cool"); /* 设置文本内容 */
lv_obj_set_style_text_font(label_cool, font, LV_STATE_DEFAULT); /* 设置字体 */
lv_obj_align(label_cool, LV_ALIGN_CENTER, 0, -scr_act_height() / 16 ); /* 设置位置 */
/* 制冷模式开关 */
switch_cool = lv_switch_create(obj_cool); /* 创建开关 */
lv_obj_set_size(switch_cool,scr_act_height() / 6, scr_act_height() / 12 ); /* 设置大小 */
lv_obj_align(switch_cool, LV_ALIGN_CENTER, 0, scr_act_height() / 16 ); /* 设置位置 */
lv_obj_add_event_cb(switch_cool, switch_event_cb, LV_EVENT_VALUE_CHANGED, NULL);/* 添加事件 */
}
/**
* @brief 制暖功能开关
* @param 无
* @return 无
*/
static void lv_example_switch2(void)
{
/* 制暖模式基础对象(矩形背景) */
lv_obj_t *obj_heat = lv_obj_create(lv_scr_act());
lv_obj_set_size(obj_heat,scr_act_height() / 3, scr_act_height() / 3 );
lv_obj_align(obj_heat, LV_ALIGN_CENTER, 0, 0 );
/* 制暖模式开关标签 */
lv_obj_t *label_heat = lv_label_create(obj_heat);
lv_label_set_text(label_heat, "Heat");
lv_obj_set_style_text_font(label_heat, font, LV_STATE_DEFAULT);
lv_obj_align(label_heat, LV_ALIGN_CENTER, 0, -scr_act_height() / 16 );
/* 制暖模式开关 */
switch_heat = lv_switch_create(obj_heat);
lv_obj_set_size(switch_heat,scr_act_height() / 6, scr_act_height() / 12 );
lv_obj_align(switch_heat, LV_ALIGN_CENTER, 0, scr_act_height() / 16 );
lv_obj_add_event_cb(switch_heat, switch_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
}
/**
* @brief 干燥功能开关
* @param 无
* @return 无
*/
static void lv_example_switch3(void)
{
/* 干燥模式基础对象(矩形背景) */
lv_obj_t *obj_dry = lv_obj_create(lv_scr_act());
lv_obj_set_size(obj_dry,scr_act_height() / 3, scr_act_height() / 3 );
lv_obj_align(obj_dry, LV_ALIGN_CENTER, scr_act_width() / 4, 0 );
/* 干燥模式开关标签 */
lv_obj_t *label_dry = lv_label_create(obj_dry);
lv_label_set_text(label_dry, "Dry");
lv_obj_set_style_text_font(label_dry, font, LV_STATE_DEFAULT);
lv_obj_align(label_dry, LV_ALIGN_CENTER, 0, -scr_act_height() / 16 );
/* 干燥模式开关 */
switch_dry = lv_switch_create(obj_dry);
lv_obj_set_size(switch_dry,scr_act_height() / 6, scr_act_height() / 12 );
lv_obj_align(switch_dry, LV_ALIGN_CENTER, 0, scr_act_height() / 16 );
lv_obj_add_state(switch_dry, LV_STATE_CHECKED|LV_STATE_DISABLED);
}
/**
* @brief LVGL演示
* @param 无
* @return 无
*/
void lv_mainstart(void)
{
lv_example_label(); /* 功能标题 */
lv_example_switch1(); /* 制冷模式开关 */
lv_example_switch2(); /* 制暖模式开关 */
lv_example_switch3(); /* 干燥模式开关 */
}