littleVGL学习笔记15——lv_sw 开关

1. 介绍

  lv_sw 开关看起来像是一个缩小版的 lv_slider 滑块控件,那我可以告诉大家,它的本质就是一个 lv_slider 滑块控件,然后在此上面做一些小的升级,就变成了 lv_sw 开关控件。
  lv_sw 控件具有开和关俩种状态,我们可以通过如下三种方式来改变它的状态:

  1. 点击这个开关控件;
  2. 滑动这个开关控件,它会根据你滑动的位置来自动决定状态的;
  3. 使用 lv_sw_on(sw, LV_ANIM_ON/OFF), lv_sw_off(sw,LV_ANIM_ON/OFF), lv_sw_toggle(sw, LV_ANOM_ON/OFF)等 API 接口来改变其状态

  当其状态发生改变后 , 它会给它的事件回调函数发送一个LV_EVENT_VALUE_CHANGED 事件.但这里有一点需要注意一下,如果你是通过调用lv_sw_on, lv_sw_off, lv_sw_toggle 等接口来改变开关状态的话 , 它是不会发送LV_EVENT_VALUE_CHANGED 事件的。
在这里插入图片描述

2. lv_sw 的 API 接口

2.1 主要数据类型

2.1.1 开关样式数据类型

enum {
LV_SW_STYLE_BG,
LV_SW_STYLE_INDIC,
LV_SW_STYLE_KNOB_OFF,
LV_SW_STYLE_KNOB_ON,
};
typedef uint8_t lv_sw_style_t;

LV_SW_STYLE_BG: 开关的背景样式,使用样式中的 style.body 字段,其中的 padding 字段用来设置背景边框与旋钮边框之间的距离
LV_SW_STYLE_INDIC: 开关的指示器样式,使用样式中的 style.body 字段,其中的 padding字段设置指示器与背景边框之间的距离
LV_SW_STYLE_KNOB_OFF: 开关处于关闭状态时的旋钮样式,使用样式中的style.body字段,但是其内部的 padding 字段除外
LV_SW_STYLE_KNOB_ON: 开关处于打开状态时的旋钮样式,使用样式中的 style.body 字段,但是其内部的 padding 字段除外。

lv_sw 开关样式的使用和 lv_slider 滑块样式的使用基本是一样的,唯一的区别就是 lv_sw上的旋钮具有 2 种样式,分别对应开和关俩种状态。

2.2 API 接口

2.2.1 创建对象

lv_obj_t * lv_sw_create(lv_obj_t * par, const lv_obj_t * copy);

参数:
par: 父对象
copy: 拷贝的对象,如果无拷贝的话,传 NULL 值
返回值:
返回创建出来的对象,如果返回 NULL 的话,说明堆空间不够了。

2.2.2 设置为打开状态

void lv_sw_on(lv_obj_t * sw, lv_anim_enable_t anim);

参数:
sw: 开关对象
anim: 在切换到打开状态时,是否使能动画效果,有 2 个可选值如下:
LV_ANIM_OFF: 不使能动画效果
LV_ANIM_ON: 使能动画效果
注意此 API 接口不会触发 LV_EVENT_VALUE_CHANGED 事件。

2.2.3 设置为关闭状态

void lv_sw_off(lv_obj_t * sw, lv_anim_enable_t anim);

参数:
sw: 开关对象
anim: 在切换到关闭状态时,是否使能动画效果,有 2 个可选值如下:
LV_ANIM_OFF: 不使能动画效果
LV_ANIM_ON: 使能动画效果
注意此 API 接口不会触发 LV_EVENT_VALUE_CHANGED 事件。

2.2.4 反转当前的状态

bool lv_sw_toggle(lv_obj_t * sw, lv_anim_enable_t anim);

参数:
sw: 开关对象
anim: 在反转状态时是否使能动画效果,有 2 个可选值如下:
LV_ANIM_OFF: 不使能动画效果
LV_ANIM_ON: 使能动画效果
返回值:
返回开关反转后的状态,true 代表为打开状态,false 代表关闭状态

2.2.5 设置样式

void lv_sw_set_style(lv_obj_t * sw, lv_sw_style_t type, const lv_style_t * style);

参数:
sw: 开关对象
type: 设置哪一个部件的样式,有如下 4 个可选值:
LV_SW_STYLE_BG: 设置背景的样式
LV_SW_STYLE_INDIC: 设置指示器的样式
LV_SW_STYLE_KNOB_OFF: 设置开关处于关闭状态时的旋钮样式
LV_SW_STYLE_KNOB_ON: 设置开关处于打开状态时的旋钮样式
style: 样式

2.2.6 设置动画时长

void lv_sw_set_anim_time(lv_obj_t * sw, uint16_t anim_time);

参数:
sw: 开关对象

2.2.7 获取开关的状态

static inline bool lv_sw_get_state(const lv_obj_t * sw);

参数:
sw: 开关对象
返回值:
返回 true 代表开关处于打开状态,返回 false 代表开关处于关闭状态

3. 实际效果

在这里插入图片描述
在这里插入图片描述

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页