1. 介绍
lv_lmeter 控件是一种类似于汽车仪表盘上的弧形刻度,它是由一些径向放射状的刻度线构成,它的主要作用就是进度指示,在所有的刻度线中,可以分为 2 种,一种是活跃刻度线,它利用样式中的 body.main_color 和 body.grad_color 属性,可以让活跃刻度线显示出弧形渐变色,活跃刻度线的作用就是展示当前的进度值,配合渐变色,可以达到更为友好更为直观的提示作用,另外一种就是非活跃刻度线了,它的颜色由 line.color 指定,一般为灰色,用来作为背景线,表示还剩下多少进度未被加载,lv_lmeter 的进度范围可以通过lv_lmeter_set_range(lmeter, min,max);接口进行设置,另外其刻度线的数量和角度值可以通过 lv_lmeter_set_scale(lmeter, angle,line_num)接口来进行设置。
2. lv_lmeter 的 API 接口
2.1 主要数据类型
2.1.1 刻度指示器样式数据类型
enum {
LV_LMETER_STYLE_MAIN,
};
typedef uint8_t lv_lmeter_style_t;
我们这里主要是讲这种样式里面相关字段的含义,如下所示:
body.main_color: 活跃刻度线的起始颜色
body.grad_color: 活跃刻度线的终止颜色
line.color: 非活跃刻度线的颜色
line.width: 每一条刻度线的宽度
body.padding.left: 每一条刻度线的长度
2.2 API 接口
2.2.1 创建对象
lv_obj_t * lv_lmeter_create(lv_obj_t * par, const lv_obj_t * copy);
参数:
par: 父对象
copy: 拷贝的对象,如果无拷贝的话,传 NULL 值
返回值:
返回创建出来的对象,如果返回 NULL 的话,说明堆空间不够了
2.2.2 设置进度值
void lv_lmeter_set_value(lv_obj_t * lmeter, int16_t value);
参数:
lmeter: 刻度指示器对象
value: 进度值
2.2.3 设置进度范围
void lv_lmeter_set_range(lv_obj_t * lmeter, int16_t min, int16_t max);
参数:
lmeter: 刻度指示器对象
min: 最小进度值
max: 最大进度值
2.2.4 设置角度和刻度线数量
void lv_lmeter_set_scale(lv_obj_t * lmeter, uint16_t angle, uint8_t line_cnt);
参数:
lmeter: 刻度指示器对象
angle: 角度,范围为[0,360]
line_cnt: 刻度线的数量
2.2.5 设置样式
static inline void lv_lmeter_set_style(lv_obj_t * lmeter, lv_lmeter_style_t type, lv_style_t * style)
参数:
lmeter: 刻度指示器对象
type: 要设置那部分的样式,目前只有 LV_LMETER_STYLE_MAIN 这一个可选值
style: 样式