加载器(Spinner)
::: hljs-center
![spinner.png](https://cos.easydoc.net/79463195/files/krtg5qbe.png)
:::
## 示例代码
```lua
spinner = lvgl.spinner_create(lvgl.scr_act(), nil)
lvgl.obj_set_size(spinner, 100, 100)
lvgl.obj_align(spinner, nil, lvgl.ALIGN_CENTER, 0, 0)
```
## 创建
通过 `lvgl.spinner_create` 就可创建一个加载器,本身自带动画效果。
```lua
spinner = lvgl.spinner_create(lvgl.scr_act(), nil)
```
::: hljs-center
![jdfw3.gif](https://cos.easydoc.net/71161452/files/ksbsn63u.gif)
:::
## 弧长
可以通过 `lvgl.spinner_set_arc_length` 函数调整加载器的弧长。单位是度,一圈是按 360 度计算的。
```lua
lvgl.spinner_set_arc_length(spinner, 180)
```
::: hljs-center
![jdfw3.gif](https://cos.easydoc.net/71161452/files/ksbsv5jg.gif)
:::
## 转速
通过 `lvgl.spinner_set_spin_time` 可以设置转速,这里的单位是 ms,是加载器转完一圈的时间,GIF 录制的时间稍微有点快,这里转完一圈的时间设置的是 4 秒。
```lua
lvgl.spinner_set_spin_time(spinner, 4000)
```
::: hljs-center
![jdfw3.gif](https://cos.easydoc.net/71161452/files/ksbt1rv9.gif)
:::
## 类型
旋转类型通过 `lvgl.spinner_set_type` 设置,这里的类型支持以下几种:
```lua
lvgl.SPINNER_TYPE_SPINNING_ARC -- 顶部减速
lvgl.SPINNER_TYPE_FILLSPIN_ARC -- 弧的长度会改变
lvgl.SPINNER_TYPE_CONSTANT_ARC -- 恒速转动
```
下面分别看下这几种加载器的显示效果:
`lvgl.SPINNER_TYPE_SPINNING_ARC` 在顶部的时候可以看到略微减速了。
```lua
lvgl.spinner_set_type(spinner, lvgl.SPINNER_TYPE_SPINNING_ARC)
```
::: hljs-center
![jdfw3.gif](https://cos.easydoc.net/71161452/files/ksbtfy5s.gif)
:::
`lvgl.SPINNER_TYPE_FILLSPIN_ARC ` 弧的长度会改变,这个效果比较明显。
```lua
lvgl.spinner_set_type(spinner, lvgl.SPINNER_TYPE_FILLSPIN_ARC )
```
::: hljs-center
![jdfw4.gif](https://cos.easydoc.net/71161452/files/ksbtmhvd.gif)
:::
`lvgl.SPINNER_TYPE_CONSTANT_ARC ` 恒定速度转动。
```lua
lvgl.spinner_set_type(spinner, lvgl.SPINNER_TYPE_CONSTANT_ARC)
```
::: hljs-center
![jdfw4.gif](https://cos.easydoc.net/71161452/files/ksbtocym.gif)
:::
## API
### lvgl.lvgl.spinner_create
|调用|lvgl.lvgl.spinner_create(par, copy)|
|-|-|
|功能|创建一个加载器对象|
|返回|指向创建的加载器的指针|
|参数||
|par|指向对象的指针, 它将是新键对象的父对象|
|copy|指向加载器对象的指针, 如果不为 nil, 则将从其复制新对象|
### lvgl.spinner_set_arc_length
|调用|lvgl.spinner_set_arc_length(spinner, deg)|
|-|-|
|功能|设置加载器的弧长|
|参数||
|spinner|指向加载器对象的指针|
|deg|加载器的弧长|
### lvgl.spinner_set_spin_time
|调用|lvgl.spinner_set_spin_time(spinner, time)|
|-|-|
|功能|设置加载器的动画时间|
|参数||
|spinner|指向加载器对象的指针|
|time|加载器的动画时间|
### lvgl.spinner_set_type
|调用|lvgl.spinner_set_type(spinner, type)|
|-|-|
|功能|设置加载器的类型|
|参数||
|spinner|指向加载器对象的指针|
|time|加载器的类型|
||lvgl.SPINNER_TYPE_SPINNING_ARC -- 顶部减速|
||lvgl.SPINNER_TYPE_FILLSPIN_ARC -- 弧的长度会改变|
||lvgl.SPINNER_TYPE_CONSTANT_ARC -- 恒速转动|
### lvgl.spinner_set_dir
|调用|lvgl.spinner_set_dir(spinner, dir)|
|-|-|
|功能|设置加载器的动画方向|
|参数||
|spinner|指向加载器对象的指针|
|dir|加载器的方向|
||lvgl.SPINNER_DIR_FORWARD -- 正向|
||lvgl.SPINNER_DIR_BACKWARD -- 反向|
### lvgl.spinner_get_arc_length
|调用|lvgl.spinner_get_arc_length(spinner)|
|-|-|
|功能|获取加载器的弧长|
|返回|加载器的弧长|
|参数||
|spinner|指向加载器对象的指针|
### lvgl.spinner_get_spin_time
|调用|lvgl.spinner_get_spin_time(spinner)|
|-|-|
|功能|获取加载器的动画时间|
|返回|加载器的动画时间|
|参数||
|spinner|指向加载器对象的指针|
### lvgl.spinner_get_type
|调用|lvgl.spinner_get_type(spinner)|
|-|-|
|功能|获取加载器的类型|
|返回|加载器的类型|
|参数||
|spinner|指向加载器对象的指针|
### lvgl.spinner_get_dir
|调用|lvgl.spinner_get_dir(spinner)|
|-|-|
|功能|获取加载器的动画方向|
|返回|加载器的动画方向|
|参数||
|spinner|指向加载器对象的指针
[参考链接(C语言)](https://docs.lvgl.io/7.11/widgets/spinner.html)