進度條(lv_bar)
概述
1.進度條物件(元件)有一個背景和一個指示器. 指示器的寬度根據進度條的當前值2.自動設定.
3.如果設定進度條的寬度小於其高度,就可以建立出垂直襬放的進度條
4.不僅可以設定結束,還可以設定進度條的起始值,從而改變指標的起始位置
樣式和零件
LV_PART_MAIN
進度條的背景,它使用典型的背景樣式屬性.填充屬性使指標器變小或變大.. 如果啟用動畫 LV_ANIM_ON,anim_time 樣式屬性設定填充動畫的時間。
**LV_PART_INDICATOR
指示器本身;也使用了所有典型的背景屬性。**
值和範圍
使用 lv_bar_set_value()
。用於設定進度條(bar)的值。這個函式的最後一個引數用於控制是否在設定值時應用動畫效果。
-
bar
是指向進度條物件的指標。 -
new_value
是要設定的新值。 -
anim
是一個列舉型別lv_anim_enable_t
,用於指定是否啟用動畫。這個列舉型別通常有兩個值:LV_ANIM_OFF
:不啟用動畫,立即設定新值。LV_ANIM_ON
:啟用動畫,進度條的值會平滑過渡到新值。
lv_bar_set_value(my_bar, 50, LV_ANIM_ON); //這行程式碼會將進度條 my_bar 的值設定為 50,並且在設定過程中會有動畫效果 lv_bar_set_value(my_bar, 50, LV_ANIM_OFF); //這行程式碼會立即將進度條 my_bar 的值設定為 50,沒有動畫效果。
整個進度條值的範圍(最小值和最大值),該範圍可以使用 [lv_bar_set_range](https://lvgl.100ask.net/master/API/widgets/bar/lv_bar.html#_CPPv416lv_bar_set_rangeP8lv_obj_t7int32_t7int32_t)(bar, min, max
) 修改。預設範圍為 0..100,預設繪製方向為水平模式下從左到右和垂直模式下從下到上。如果最小值大於最大值,例如 100..0,繪圖方向變為相反方向。
模式
原文:該條形圖可以是以下模式之一:
LV_BAR_MODE_NORMAL
如上所述的普通進度條(預設)LV_BAR_MODE_SYMMETRICAL
將指標從零值繪製為當前值。需要否定最小範圍和正最大範圍。LV_BAR_MODE_RANGE
這個模式下也可以指定負的最小範圍。這樣進度條的起始值可以不是0,而是你指定的數值(參考示例),但是這樣設定的起始值lv_bar_set_start_value(bar, new_value, LV_ANIM_ON/OFF)
必須小於結束值。
該進度條可以是以下模式之一:
-
LV_BAR_MODE_NORMAL
如上所述的普通進度條(預設) -
LV_BAR_MODE_SYMMETRICAL
用於配置進度條(bar)的模式,使其具有對稱性.在對稱模式下,進度條的最小值和最大值都相對於一箇中心點對稱。例如,如果進度條的範圍是從 -100 到 100,那麼 0 就是中心點,當你設定的值為負數時,進度條會從中心向左(或向下)增長,而正數則會從中心向右(或向上)增長。
這個模式特別適用於需要表示正負變化的場景,比如溫度變化、音量控制等。
lv_obj_t * bar = lv_bar_create(lv_scr_act()); lv_bar_set_range(bar, -100, 100); // 設定進度條的範圍 lv_bar_set_mode(bar, LV_BAR_MODE_SYMMETRICAL); // 啟用對稱模式 lv_bar_set_value(bar, 50, LV_ANIM_OFF); // 設定進度條的值
如果你設定的值為 50,進度條會從中心點向正方向擴充套件到 50。如果你設定的值為 -50,進度條會從中心點向負方向擴充套件到 -50。
-
**
LV_BAR_MODE_RANGE
** 在LV_BAR_MODE_RANGE
模式下,進度條可以用來表示一個範圍,例如表示某個值的最小和最大範圍,或者表示一個區間。這個功能在需要顯示範圍或區間的場景中非常有用,比如溫度範圍、進度區間等。lv_obj_t * bar = lv_bar_create(lv_scr_act()); lv_bar_set_range(bar, 0, 100); // 設定進度條的範圍 lv_bar_set_mode(bar, LV_BAR_MODE_RANGE); // 啟用範圍模式 lv_bar_set_value(bar, 40, LV_ANIM_OFF); // 設定進度條的起點值 lv_bar_set_start_value(bar, 20, LV_ANIM_OFF); // 設定進度條的終點值
在這個示例中,進度條的範圍是從 0 到 100,並且啟用了範圍模式。當設定進度條的起點值和終點值時,進度條會顯示從起點到終點的範圍
這種模式非常適合需要表示區間的場景,比如顯示一個測量值的波動範圍、表示進度的某個階段等。
案例
官網有典型案例:
Bar (進度條)(lv_bar) — LVGL 文件