滑动条 (Slider)

::: hljs-center ![slider.png](https://cos.easydoc.net/79463195/files/krtgmtwb.png) ::: 滑动条看起来和进度条是有些是有些像,但不同的是滑动条可以进行数值选择。 ## 示例代码 ```lua -- 回调函数 slider_event_cb = function(obj, event) if event == lvgl.EVENT_VALUE_CHANGED then local val = (lvgl.slider_get_value(obj) or "0").."%" lvgl.label_set_text(slider_label, val) lvgl.obj_align(slider_label, obj, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10) end end -- 创建滑动条 slider = lvgl.slider_create(lvgl.scr_act(), nil) lvgl.obj_align(slider, nil, lvgl.ALIGN_CENTER, 0, 0) lvgl.obj_set_event_cb(slider, slider_event_cb) -- 创建标签 slider_label = lvgl.label_create(lvgl.scr_act(), nil) lvgl.label_set_text(slider_label, "0%") lvgl.obj_align(slider_label, slider, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10) ``` ## 创建 滑动条是通过 `lvgl.slider_create` 函数创建的。 ```lua slider = lvgl.slider_create(lvgl.scr_act(), nil) ``` 滑动条创建完之后设置显示位置就可以进行操作了。 ::: hljs-center ![jdfw3.gif](https://cos.easydoc.net/71161452/files/ksacn937.gif) ::: ## 设置数值 滑动条的使用和 Bar 还是很像的。可以设置数值 `lvgl.slider_set_value`,也可以设置显示范围。` lvgl.slider_set_range`。 ```lua lvgl.slider_set_range(slider, 100, 200) lvgl.slider_set_value(slider, 150, lvgl.ANIM_OFF) ``` ::: hljs-center ![设置数值.png](https://cos.easydoc.net/71161452/files/ksacu1ze.png) ::: ## 类型 滑动条可以设置类型,除了普通的单个旋钮外,也可以设置两个旋钮,起始位置和结束位置各一个,两个位置的旋钮都可以滑动。滑动条类型是通过函数 `lvgl.slider_set_type` 设置的,可以选择的类型有: ```lua lvgl.SLIDER_TYPE_NORMAL -- 普通的默认类型 lvgl.SLIDER_TYPE_RANGE -- 滑动条可以有两个旋钮 ``` 下面我们来看下两个旋钮的滑动条。 ```lua lvgl.slider_set_type(slider, lvgl.SLIDER_TYPE_RANGE) ``` ::: hljs-center ![jdfw.gif](https://cos.easydoc.net/71161452/files/ksahrtze.gif) ::: ## 事件 通过对滑动条设置回调函数,我们可以获取滑动条设置的数值,滑动条本身就是个输入控件。 ```lua -- 回调函数 slider_event_cb = function(obj, event) if event == lvgl.EVENT_VALUE_CHANGED then local val = (lvgl.slider_get_value(obj) or "0").."%" lvgl.label_set_text(slider_label, val) lvgl.obj_align(slider_label, obj, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10) end end -- 创建滑动条 slider = lvgl.slider_create(lvgl.scr_act()) lvgl.obj_align(slider, nil, lvgl.ALIGN_CENTER, 0, 0) lvgl.obj_set_event_cb(slider, slider_event_cb) -- 创建标签 slider_label = lvgl.label_create(lvgl.scr_act(), nil) lvgl.label_set_text(slider_label, "0%") lvgl.obj_align(slider_label, slider, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10) ``` 在这里,我们对滑动条设置了一个回调函数,监听数值改变事件。同时,我们添加了一个标签,用来显示滑动条的数值。显示效果如下: ::: hljs-center ![jdfw4.gif](https://cos.easydoc.net/71161452/files/ksaj1vpn.gif) ::: ## API ### lvgl.slider_create |调用|lvgl.slider_create(par, copy)| |-|-| |功能|创建一个滑动条对象| |返回|指向滑动条对象的指针| |参数|| |par|指向对象的指针, 它将是新键对象的父对象| |copy|指向滑动条对象的指针, 如果不为 nil, 则将从其复制新对象| ### lvgl.slider_set_value |调用|lvgl.slider_set_value(slider, val, anim)| |-|-| |功能|设置滑动条的数值| |参数|| |slider|指向滑动条对象的指针| |val|滑动条的新数值| |anim|lvgl.ANIM_ON 用动画设置值。lvgl.ANIM_OFF 立即更改值| ### lvgl.slider_set_type |调用|lvgl.slider_set_type(slider, type)| |-|-| |功能|设置滑动条的类型| |参数|| |slider|指向滑动条对象的指针| |type|滑动条的类型 lvgl.SLIDER_TYPE_RANGE 或 lvgl.SLIDER_TYPE_NORMAL| ### lvgl.slider_set_range |调用|lvgl.slider_set_range(slider, min, max)| |-|-| |功能|设置滑动条的最小值和最大值| |参数|| |slider|指向滑动条对象的指针| |min|最小值| |max|最大值| ### lvgl.slider_set_anim_time |调用|lvgl.slider_set_anim_time(slider, anim_time)| |-|-| |功能|设置滑动条的动画时间| |参数|| |slider|指向滑动条对象的指针| |anim_time|动画时间(以毫秒为单位)。| ### lvgl.slider_get_value |调用|lvgl.slider_get_value(slider)| |-|-| |功能|获取滑动条的设置值| |返回|滑动条的设置值| |参数|| |slider|指向滑动条对象的指针| ### lvgl.slider_get_left_value |调用|lvgl.slider_get_left_value(slider)| |-|-| |功能|获取滑动条的左值| |返回|滑动条的左值| |参数|| |slider|指向滑动条对象的指针| ### lvgl.slider_get_min_value |调用|lvgl.slider_get_min_value(slider)| |-|-| |功能|获取滑动条的最小值| |返回|滑动条的最小值| |参数|| |slider|指向滑动条对象的指针| ### lvgl.slider_get_max_value |调用|lvgl.slider_get_max_value(slider)| |-|-| |功能|获取滑动条的最大值| |返回|滑动条的最大值| |参数|| |slider|指向滑动条对象的指针| ### lvgl.slider_is_dragged |调用|lvgl.slider_is_dragged(slider)| |-|-| |功能|判断忽快是否被拖动| |返回|true 在被拖动, false 没有被拖动| |参数|| |slider|指向滑动条对象的指针| ### lvgl.slider_get_anim_time |调用|lvgl.slider_get_anim_time(slider, time)| |-|-| |功能|获取滑块设置的动画时间| |返回|滑块的动画时间| |参数|| |slider|指向滑动条对象的指针|