LVGL笔记18–lv_slider滑块

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值