当前位置: 首页 > 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.dtcms.com/a/187144.html

相关文章:

  • 输出重定向
  • 位运算题目:黑板异或游戏
  • 牛客周赛 Round 92
  • ComfyUI的K采样器参数详解:实战演示
  • Python 实现失败重试功能的几种方法
  • 数据同步DataX任务在线演示
  • 部署Superset BI(六)Superset 的主机安装
  • LVGL(lv_list列表控件)
  • Linux服务器管理面板新选择:mdserver-web深度解析与使用指南
  • sqlilab-Less-18
  • CHIP第四次作业
  • Python笔记:windows下永久配置pip镜像源
  • 5.10-套接字通信 - C++
  • 算法题(145):货仓选址
  • SpringAI框架中的RAG模块详解及应用示例
  • Halcon案例(一):C#联合Halcon识别路由器上的散热孔
  • 定时器设计
  • python打包成exe
  • 中国古代史4
  • Vue 3 实现转盘抽奖效果
  • 对抗进行性核上性麻痹,健康护理筑牢生活防线
  • 大数据课设——基于电影数据集,分析导演影响力,绘制各种可视化图表
  • python练习-20250512
  • Jupyter-AI Pandas-AI本地使用功能优化
  • 【A2A】根据A2A的协议标准,不同架构的2个大模型agent的交互,是否都需要实现和对接 client和server模块?
  • 8天Python从入门到精通【itheima】-1~5
  • 前端面试每日三题 - Day 31
  • 基于 ABP vNext 框架实现高可用高性能的 Modbus 通信网关
  • Python实例题:pygame开发打飞机游戏
  • 【LeetCode】49.字母异位词分组