当前位置: 首页 > news >正文

LVGL(lv_switch开关)

文章目录

    • 🧩 一、`lv_switch` 是什么?
    • ✨ 二、基本用法
      • ✅ 1. 创建一个 switch
      • ✅ 2. 设置/读取状态
      • ✅ 3. 添加事件回调(监听状态切换)
    • 🎨 三、自定义样式(可选)
    • 🧪 四、完整示例
    • 📌 五、常用 API 总结
    • 📱 应用场景举例


当然可以!lv_switchLVGL 中的开关组件,外观和手机中设置里的“开关”一样,用于表示“开 / 关”状态,适用于设置项的启用/禁用等场景。


🧩 一、lv_switch 是什么?

lv_switch 是 LVGL 提供的一种内置控件,表示二值状态(开/关),用户可以点击切换状态,通常用于设置界面或设备控制面板。

开关支持动画、样式自定义、状态读取/设置、事件监听等。


✨ 二、基本用法

✅ 1. 创建一个 switch

lv_obj_t * sw = lv_switch_create(lv_scr_act());
lv_obj_align(sw, LV_ALIGN_CENTER, 0, 0);  // 居中

✅ 2. 设置/读取状态

// 设置为开(true)或关(false)
lv_obj_add_state(sw, LV_STATE_CHECKED);     // 打开
lv_obj_clear_state(sw, LV_STATE_CHECKED);   // 关闭// 获取当前状态(是否为打开)
bool is_on = lv_obj_has_state(sw, LV_STATE_CHECKED);

✅ 3. 添加事件回调(监听状态切换)

void switch_event_cb(lv_event_t * e) {lv_obj_t * sw = lv_event_get_target(e);if (lv_obj_has_state(sw, LV_STATE_CHECKED)) {printf("开关已打开\n");} else {printf("开关已关闭\n");}
}lv_obj_add_event_cb(sw, switch_event_cb, LV_EVENT_VALUE_CHANGED, NULL);

🎨 三、自定义样式(可选)

你可以通过 lv_obj_set_style_*() 改变开关颜色、大小等。例如:

// 改变开关背景颜色
lv_obj_set_style_bg_color(sw, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR);

你也可以设置 LV_PART_KNOB(滑块部分)的样式。


🧪 四、完整示例

void create_switch_demo() {lv_obj_t * sw = lv_switch_create(lv_scr_act());lv_obj_align(sw, LV_ALIGN_CENTER, 0, 0);lv_obj_add_event_cb(sw, switch_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
}

📌 五、常用 API 总结

功能API
创建开关lv_switch_create(parent)
设置状态(打开)lv_obj_add_state(sw, LV_STATE_CHECKED)
设置状态(关闭)lv_obj_clear_state(sw, LV_STATE_CHECKED)
读取状态lv_obj_has_state(sw, LV_STATE_CHECKED)
添加事件回调lv_obj_add_event_cb(sw, cb, LV_EVENT_VALUE_CHANGED, user_data)
修改样式lv_obj_set_style_*()

📱 应用场景举例

  • 设置页面:“Wi-Fi 开关”、“蓝牙开关”
  • IoT 控制面板:“灯光开关”、“加热器控制”
  • 低功耗设备控制开关

http://www.xdnf.cn/news/415567.html

相关文章:

  • 【JS逆向基础】前端基础-JS
  • 技术视界 | 具身感知与生成大模型:开启智能新时代(上)
  • 多线程(一)
  • 2025/5/7 心得
  • 进销存ERP系统,Java+Vue,含源码及文档,整合进销存各环节,实现数据精准互通,提升企业运营效能
  • 1.1 文章简介
  • Linux——数据库备份与恢复
  • C++哈希表
  • Fellou智能体调研
  • Python训练营打卡DAY23
  • c++ 类的成员初始化
  • [Windows] PicPick Professional_v7.3.4 中文专业版
  • SpringDataRedis的入门案例,以及RedisTemplate序列化实现
  • 18.three官方示例+编辑器+AI快速学习webgl_buffergeometry_points_interleaved
  • Ascend的aclgraph(五)PrimTorch TorchInductor
  • USB学习【10】描述符-HID描述符
  • Stream Deck纯软件实现高性价比平替
  • 多线程(2)——Thread类及常见方法
  • 2025年上半年软考备考攻略:关键事项提醒
  • Java知识库网站整理
  • CHIP第四次作业
  • [编程基础] PHP · 学习手册
  • Spring事务中异步操作导致数据查询失败问题分析与解决方案
  • SHA-256 哈希算法详解
  • DNS工作原理与报文解析
  • Docker快速入门与应用
  • 基于Arduino的贪吃蛇游戏机
  • 位运算题目:黑板异或游戏
  • 火山云网站搭建
  • AES-128 加密与解密详解