LVGL学习笔记17 - 开关Switch

31 篇文章 94 订阅

目录

 1. Parts

2. 状态

2.1 获取当前状态

2.2 设置开状态

2.3 设置关状态

2.4 设置Disable状态

2.5 设置Enable状态

3. 事件

3.1 设置事件回调函数

3.2 回调函数


开关看起来像一个小滑块,功能类似于按钮,通过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");
    }
}

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值