LVGL笔记18–lv_slider滑块
lv_slider滑块是由lv_bar进度条对象外加一个类似于旋钮的东西构成的,这个旋钮可以是被拖拽来设置lv_slider滑块的值,和lv_bar进度条一样。
lv_slider可以是被设置成是水平滑块或者是垂直滑块,lv_bar对象上的大部分特性在lv_slider对象上基本都能找到,比如设置进度值、动画时间、设置最大最小范围等,API函数的使用方法也基本是一模一样。
当滑块上被点击或者滑块上的旋钮被拖拽导致其值发生变化时,会给对应的回调函数发送一个LV_EVENT_VALUE_CHANGED 事件,如果旋钮被持续拖拽时,会一直发送事件,有时不需要持续接收,可以只监听松手事件(LV_EVENT_RELEASED)来获取最后的进度值。
主要数据类型
enum {
LV_SLIDER_STYLE_BG,
LV_SLIDER_STYLE_INDIC,
LV_SLIDER_STYLE_KNOB,
};
typedef uint8_t lv_slider_style_t;
LV_SLIDER_STYLE_BG:滑块的背景样式,其实就是其内部的lv_bar进度条的背景样式,使用样式中的style.body字段,其中的padding字段设置指示器与背景框之间的距离。
LV_SLIDER_STYLE_INDIC: 滑块的指示器样式,其实就是其内部的lv_bar进度条的指示器样式,使用style.body字段,其中的padding字段设置指示器与背景边框之间的距离。
LV_SLIDER_STYLE_KNOB: 滑块上旋钮的样式,使用样式中的 style.body 字段,但是其内部的 padding 字段设置
API函数接口
-
创建lv_slider对象
/*------------------------------------------------------------------------------- 这个函数用来设置lv_slider对象 par: 父对象 copy: 拷贝的对象,如果无拷贝的话,传 NULL 值 返回值: 返回创建出来的对象,如果返回 NULL 的话,说明堆空间不够了 --------------------------------------------------------------------------------*/ lv_obj_t * lv_slider_create(lv_obj_t * par, const lv_obj_t * copy);
-
设置动画时长
/*------------------------------------------------------------------------------- 这个函数用来设置lv_slider对象的动画时长 slider: 滑块对象 anim_time: 动画时长,单位 ms 注意此 API 接口必须得放在 lv_slider_set_value 接口前面调用,否则无效 --------------------------------------------------------------------------------*/ static inline void lv_slider_set_anim_time(lv_obj_t * slider, uint16_t anim_time);
-
设置进度值
/*------------------------------------------------------------------------------- 这个函数用来设置lv_slider对象的进度值 slider: 滑块对象 value: 新的进度值 anim: 在切换到新的进度值时,是否使能动画效果,有 2 个可选值如下: LV_ANIM_OFF: 不使能动画效果 LV_ANIM_ON: 使能动画效果 --------------------------------------------------------------------------------*/ static inline void lv_slider_set_value(lv_obj_t * slider, int16_t value, lv_anim_enable_t anim);
-
设置进度范围
/*------------------------------------------------------------------------------- 这个函数用来设置lv_slider对象的进度范围 slider: 滑块对象 min: 最小值 max: 最大值 --------------------------------------------------------------------------------*/ static inline void lv_slider_set_range(lv_obj_t * slider, int16_t min, int16_t max);
-
设置样式
/*------------------------------------------------------------------------------- 这个函数用来设置lv_slider对象的样式 slider: 滑块对象 type: 设置哪一个部件的样式,有如下 3 个可选值: LV_SLIDER_STYLE_BG: 设置背景的样式 LV_SLIDER_STYLE_INDIC: 设置指示器的样式 LV_SLIDER_STYLE_KNOB: 设置旋钮的按钮 style: 样式 --------------------------------------------------------------------------------*/ void lv_slider_set_style(lv_obj_t * slider, lv_slider_style_t type, const lv_style_t * style);
-
获取当前进度值
/*------------------------------------------------------------------------------- 这个函数用来获取lv_slider对象的进度值 slider: 滑块对象 返回值:返回当前的进度值 --------------------------------------------------------------------------------*/ int16_t lv_slider_get_value(const lv_obj_t * slider);
-
判断旋钮是否正在被拖拽
/*------------------------------------------------------------------------------- 这个函数用来判断lv_slider对象是否正在被拖拽 slider: 滑块对象 返回值:返回 true 代表正在被拖拽,返回 false 代表没有在被拖拽 --------------------------------------------------------------------------------*/ bool lv_slider_is_dragged(const lv_obj_t * slider);
2021–2--16–wrs