feat(bar): reverse drawing direction of lv_bar if min > max (#4654)
Signed-off-by: wangxuedong <wangxuedong@xiaomi.com>
This commit is contained in:
@@ -34,3 +34,9 @@ Custom drawer to show the current value
|
||||
.. lv_example:: widgets/bar/lv_example_bar_6
|
||||
:language: c
|
||||
|
||||
Bar with opposite direction
|
||||
---------------------------
|
||||
|
||||
.. lv_example:: widgets/bar/lv_example_bar_7
|
||||
:language: c
|
||||
|
||||
|
||||
23
examples/widgets/bar/lv_example_bar_7.c
Normal file
23
examples/widgets/bar/lv_example_bar_7.c
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "../../lv_examples.h"
|
||||
#if LV_USE_BAR && LV_BUILD_EXAMPLES
|
||||
|
||||
/**
|
||||
* Bar with opposite direction
|
||||
*/
|
||||
void lv_example_bar_7(void)
|
||||
{
|
||||
lv_obj_t * label;
|
||||
|
||||
|
||||
lv_obj_t * bar_tob = lv_bar_create(lv_scr_act());
|
||||
lv_obj_set_size(bar_tob, 20, 200);
|
||||
lv_bar_set_range(bar_tob, 100, 0);
|
||||
lv_bar_set_value(bar_tob, 70, LV_ANIM_OFF);
|
||||
lv_obj_align(bar_tob, LV_ALIGN_CENTER, 0, -30);
|
||||
|
||||
label = lv_label_create(lv_scr_act());
|
||||
lv_label_set_text(label, "From top to bottom");
|
||||
lv_obj_align_to(label, bar_tob, LV_ALIGN_OUT_TOP_MID, 0, -5);
|
||||
}
|
||||
|
||||
#endif
|
||||
1
examples/widgets/bar/lv_example_bar_7.py
Normal file
1
examples/widgets/bar/lv_example_bar_7.py
Normal file
@@ -0,0 +1 @@
|
||||
pass
|
||||
@@ -36,6 +36,7 @@ void lv_example_bar_3(void);
|
||||
void lv_example_bar_4(void);
|
||||
void lv_example_bar_5(void);
|
||||
void lv_example_bar_6(void);
|
||||
void lv_example_bar_7(void);
|
||||
|
||||
void lv_example_button_1(void);
|
||||
void lv_example_button_2(void);
|
||||
@@ -118,6 +119,7 @@ void lv_example_scale_5(void);
|
||||
void lv_example_slider_1(void);
|
||||
void lv_example_slider_2(void);
|
||||
void lv_example_slider_3(void);
|
||||
void lv_example_slider_4(void);
|
||||
|
||||
void lv_example_span_1(void);
|
||||
|
||||
|
||||
@@ -17,4 +17,8 @@ Slider with extended drawer
|
||||
.. lv_example:: widgets/slider/lv_example_slider_3
|
||||
:language: c
|
||||
|
||||
Slider with opposite direction
|
||||
------------------------------
|
||||
|
||||
.. lv_example:: widgets/slider/lv_example_slider_4
|
||||
:language: c
|
||||
|
||||
34
examples/widgets/slider/lv_example_slider_4.c
Normal file
34
examples/widgets/slider/lv_example_slider_4.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "../../lv_examples.h"
|
||||
#if LV_USE_SLIDER && LV_BUILD_EXAMPLES
|
||||
|
||||
static void slider_event_cb(lv_event_t * e);
|
||||
static lv_obj_t * slider_label;
|
||||
|
||||
/**
|
||||
* Slider with opposite direction
|
||||
*/
|
||||
void lv_example_slider_4(void)
|
||||
{
|
||||
/*Create a slider in the center of the display*/
|
||||
lv_obj_t * slider = lv_slider_create(lv_scr_act());
|
||||
lv_obj_center(slider);
|
||||
lv_obj_add_event(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
||||
/*Reverse the direction of the slider*/
|
||||
lv_slider_set_range(slider, 100, 0);
|
||||
/*Create a label below the slider*/
|
||||
slider_label = lv_label_create(lv_scr_act());
|
||||
lv_label_set_text(slider_label, "0%");
|
||||
|
||||
lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
|
||||
}
|
||||
|
||||
static void slider_event_cb(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t * slider = lv_event_get_target(e);
|
||||
char buf[8];
|
||||
lv_snprintf(buf, sizeof(buf), "%d%%", (int)lv_slider_get_value(slider));
|
||||
lv_label_set_text(slider_label, buf);
|
||||
lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
|
||||
}
|
||||
|
||||
#endif
|
||||
21
examples/widgets/slider/lv_example_slider_4.py
Normal file
21
examples/widgets/slider/lv_example_slider_4.py
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# Slider with opposite direction
|
||||
#
|
||||
def slider_event_cb(e):
|
||||
|
||||
slider = e.get_target_obj()
|
||||
slider_label.set_text("{:d}%".format(slider.get_value()))
|
||||
slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
|
||||
|
||||
# Create a slider in the center of the display
|
||||
slider = lv.slider(lv.screen_active())
|
||||
slider.center()
|
||||
slider.add_event(slider_event_cb, lv.EVENT.VALUE_CHANGED, None)
|
||||
slider.set_range(100, 0)
|
||||
|
||||
# Create a label below the slider
|
||||
slider_label = lv.label(lv.screen_active())
|
||||
slider_label.set_text("0%")
|
||||
|
||||
slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
|
||||
|
||||
Reference in New Issue
Block a user