• 合宙Air724UG LuatOS-Air LVGL API控件-滑动条 (Slider)


    滑动条 (Slider)

    slider.png


    滑动条看起来和进度条是有些是有些像,但不同的是滑动条可以进行数值选择。

    示例代码

    1. -- 回调函数
    2. slider_event_cb = function(obj, event)
    3. if event == lvgl.EVENT_VALUE_CHANGED then
    4. local val = (lvgl.slider_get_value(obj) or "0").."%"
    5. lvgl.label_set_text(slider_label, val)
    6. lvgl.obj_align(slider_label, obj, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10)
    7. end
    8. end
    9. -- 创建滑动条
    10. slider = lvgl.slider_create(lvgl.scr_act(), nil)
    11. lvgl.obj_align(slider, nil, lvgl.ALIGN_CENTER, 0, 0)
    12. lvgl.obj_set_event_cb(slider, slider_event_cb)
    13. -- 创建标签
    14. slider_label = lvgl.label_create(lvgl.scr_act(), nil)
    15. lvgl.label_set_text(slider_label, "0%")
    16. lvgl.obj_align(slider_label, slider, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10)

    创建

    滑动条是通过 lvgl.slider_create 函数创建的。

    slider = lvgl.slider_create(lvgl.scr_act(), nil)
    

    滑动条创建完之后设置显示位置就可以进行操作了。

    jdfw3.gif

    设置数值

    滑动条的使用和 Bar 还是很像的。可以设置数值 lvgl.slider_set_value,也可以设置显示范围。 lvgl.slider_set_range

    1. lvgl.slider_set_range(slider, 100, 200)
    2. lvgl.slider_set_value(slider, 150, lvgl.ANIM_OFF)

    设置数值.png

    类型

    滑动条可以设置类型,除了普通的单个旋钮外,也可以设置两个旋钮,起始位置和结束位置各一个,两个位置的旋钮都可以滑动。滑动条类型是通过函数 lvgl.slider_set_type 设置的,可以选择的类型有:

    1. lvgl.SLIDER_TYPE_NORMAL -- 普通的默认类型
    2. lvgl.SLIDER_TYPE_RANGE -- 滑动条可以有两个旋钮

    下面我们来看下两个旋钮的滑动条。

    lvgl.slider_set_type(slider, lvgl.SLIDER_TYPE_RANGE)
    

    jdfw.gif

    事件

    通过对滑动条设置回调函数,我们可以获取滑动条设置的数值,滑动条本身就是个输入控件。

    1. -- 回调函数
    2. slider_event_cb = function(obj, event)
    3. if event == lvgl.EVENT_VALUE_CHANGED then
    4. local val = (lvgl.slider_get_value(obj) or "0").."%"
    5. lvgl.label_set_text(slider_label, val)
    6. lvgl.obj_align(slider_label, obj, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10)
    7. end
    8. end
    9. -- 创建滑动条
    10. slider = lvgl.slider_create(lvgl.scr_act())
    11. lvgl.obj_align(slider, nil, lvgl.ALIGN_CENTER, 0, 0)
    12. lvgl.obj_set_event_cb(slider, slider_event_cb)
    13. -- 创建标签
    14. slider_label = lvgl.label_create(lvgl.scr_act(), nil)
    15. lvgl.label_set_text(slider_label, "0%")
    16. lvgl.obj_align(slider_label, slider, lvgl.ALIGN_OUT_BOTTOM_MID, 0, 10)

    在这里,我们对滑动条设置了一个回调函数,监听数值改变事件。同时,我们添加了一个标签,用来显示滑动条的数值。显示效果如下:

    jdfw4.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滑动条的新数值
    animlvgl.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指向滑动条对象的指针
  • 相关阅读:
    SE园区综合实验(未补齐版)
    JavaScript学习笔记01
    职场必备两款高效率管理工具,大有用处!
    数字人直播软件排名推荐,铭顺科技数字人品牌抢占“日不落”流量新技能
    JVM第十四讲:调试排错 - Java 内存分析之堆内存和MetaSpace内存
    LabVIEW面向对象-面向对象
    一个完整的Flutter应用
    66. 加一、Leetcode的Python实现
    Transformer发展历程 Decoder输出特征利用DCT解码投分割
    全面披露!华为云分布式云原生技术与实践
  • 原文地址:https://blog.csdn.net/l531798151/article/details/132701472