滑动条 (Slider)

滑动条看起来和进度条是有些是有些像,但不同的是滑动条可以进行数值选择。
## 示例代码
```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)
```
滑动条创建完之后设置显示位置就可以进行操作了。

## 设置数值
滑动条的使用和 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)
```

## 类型
滑动条可以设置类型,除了普通的单个旋钮外,也可以设置两个旋钮,起始位置和结束位置各一个,两个位置的旋钮都可以滑动。滑动条类型是通过函数 `lvgl.slider_set_type` 设置的,可以选择的类型有:
```lua
lvgl.SLIDER_TYPE_NORMAL -- 普通的默认类型
lvgl.SLIDER_TYPE_RANGE -- 滑动条可以有两个旋钮
```
下面我们来看下两个旋钮的滑动条。
```lua
lvgl.slider_set_type(slider, lvgl.SLIDER_TYPE_RANGE)
```

## 事件
通过对滑动条设置回调函数,我们可以获取滑动条设置的数值,滑动条本身就是个输入控件。
```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)
```
在这里,我们对滑动条设置了一个回调函数,监听数值改变事件。同时,我们添加了一个标签,用来显示滑动条的数值。显示效果如下:

## 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|指向滑动条对象的指针|