| **银杏科技有限公司旗下技术文档发布平台** ||||
|技术支持电话|**0379-69926675-801**|||
|技术支持邮件|Gingko@vip.163.com|||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^
| V1.0 | 2020-12-1 | yang | 初次建立 |
=====
实验十一:lv_bar条形指示器 =====
==== 一、条形指示器 ====
对象上有一个背景和一个指示器,用户可以通过其显示一个任务的执行进度,也可以显示仓库剩余空间大小等等。指示器的宽度根据条的当前值设置。如果对象的宽度小于其高度,则可以创建**垂直条形指示器**。条形指示器不仅可以设置结束值,还可以设置条的起始值,从而改变指示器的起始位置。
条形指示器的主要部分被称为 **LV_BAR_PART_BG** ,它使用典型的背景样式属性。**LV_BAR_PART_INDIC** 是一个虚拟部件,也使用了所有典型的背景属性。默认情况下,指示器的最大尺寸与背景的尺寸相同,不过在 **LV_BAR_PART_BG** 中设置正填充值将使指示器变小(负值会使它变大)。
{{ :icore4t:icore4t_rtt_lvgl_11_1.gif?direct |}}
void lv_gui_run(void)
{
lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */
lv_obj_t * bar1 = lv_bar_create(lv_scr_act(), NULL); /* 创建bar1 */
lv_obj_set_size(bar1, 20, 200); /* 设置bar1尺寸 */
lv_obj_align(bar1, NULL, LV_ALIGN_IN_LEFT_MID, 30, 0); /* 设置bar1位置 */
lv_bar_set_anim_time(bar1, 2000); /* 动画时长设为2s */
lv_bar_set_value(bar1, 100, LV_ANIM_ON); /* 设置目标值100 */
lv_obj_t * bar2 = lv_bar_create(lv_scr_act(), NULL); /* 创建bar2 */
lv_obj_set_size(bar2, 200, 20); /* 设置bar2尺寸 */
lv_obj_align(bar2, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -30); /* 设置bar21位置 */
lv_bar_set_anim_time(bar2, 2000); /* 动画时长设为2s */
lv_bar_set_value(bar2, 100, LV_ANIM_ON); /* 设置目标值100 */
}
==== 二、值和范围 ====
条形指示器可以通过 lv_bar_set_value(bar, new_value, LV_ANIM_ON/OFF) 设置新值。该值要在最小值和最大值之间,最小值和最大值可以使用 lv_bar_set_range(bar, min, max) 进行修改。默认范围是 [1, 100]。
lv_bar_set_value 可以根据最后一个参数( LV_ANIM_ON/OFF )设置是否带有动画的新值。动画的时间可以通过 lv_bar_set_anim_time(bar, 1000) 调整。时间以毫秒为单位。 用户也可以使用 lv_bar_set_start_value(bar, new_value, LV_ANIM_ON/OFF) 设置条形指示器的起始值。
{{ :icore4t:icore4t_rtt_lvgl_11_2.gif?direct |}}
void lv_gui_run(void)
{
int i;
lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */
lv_obj_t * bar1 = lv_bar_create(lv_scr_act(), NULL); /* 创建bar1 */
lv_obj_set_size(bar1, 200, 20); /* 设置bar1尺寸 */
lv_obj_align(bar1, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -30); /* 设置bar1位置 */
lv_bar_set_anim_time(bar1, 2000);
while(true){
for(i=-30;i<100;i++){
lv_bar_set_start_value(bar1, i, LV_ANIM_OFF); /* 设置bar1开始位置 */
lv_bar_set_value(bar1, i+30, LV_ANIM_OFF); /* 设置bar1结束位置 */
rt_thread_mdelay(10);
}
}
}
==== 三、模式与事件 ====
如果启用 **lv_bar_set_type(bar, LV_BAR_TYPE_SYMMETRICAL)** ,则可以让条形指示器从零开始,从左到右均匀的绘制动画。
条形指示器支持通用事件。