mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-11 05:37:37 +08:00
e778ea28b2
Arduino Lint / lint (push) Has been cancelled
Build Examples with C++ Compiler / build-examples (push) Has been cancelled
MicroPython CI / Build esp32 port (push) Has been cancelled
MicroPython CI / Build rp2 port (push) Has been cancelled
MicroPython CI / Build stm32 port (push) Has been cancelled
MicroPython CI / Build unix port (push) Has been cancelled
C/C++ CI / Build OPTIONS_16BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_24BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_FULL_32BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_NORMAL_8BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_SDL - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_VG_LITE - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_16BIT - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_16BIT - gcc - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_24BIT - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_24BIT - gcc - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_FULL_32BIT - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_FULL_32BIT - gcc - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_VG_LITE - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_VG_LITE - gcc - Windows (push) Has been cancelled
C/C++ CI / Build ESP IDF ESP32S3 (push) Has been cancelled
C/C++ CI / Run tests with 32bit build (push) Has been cancelled
C/C++ CI / Run tests with 64bit build (push) Has been cancelled
BOM Check / bom-check (push) Has been cancelled
Verify that lv_conf_internal.h matches repository state / verify-conf-internal (push) Has been cancelled
Verify the widget property name / verify-property-name (push) Has been cancelled
Verify code formatting / verify-formatting (push) Has been cancelled
Compare file templates with file names / template-check (push) Has been cancelled
Build docs / build-and-deploy (push) Has been cancelled
Test API JSON generator / Test API JSON (push) Has been cancelled
Check Makefile / Build using Makefile (push) Has been cancelled
Check Makefile for UEFI / Build using Makefile for UEFI (push) Has been cancelled
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_32B - Ubuntu (push) Has been cancelled
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_64B - Ubuntu (push) Has been cancelled
Port repo release update / run-release-branch-updater (push) Has been cancelled
Verify Font License / verify-font-license (push) Has been cancelled
Verify Kconfig / verify-kconfig (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
102 lines
3.1 KiB
C
102 lines
3.1 KiB
C
#include "../lv_examples.h"
|
|
#if LV_BUILD_EXAMPLES
|
|
|
|
static lv_obj_t * panel;
|
|
static lv_obj_t * save_button;
|
|
static lv_obj_t * restore_button;
|
|
static int saved_scroll_x;
|
|
static int saved_scroll_y;
|
|
|
|
static void scroll_update_cb(lv_event_t * e);
|
|
static void button_event_cb(lv_event_t * e);
|
|
|
|
static void scroll_update_cb(lv_event_t * e)
|
|
{
|
|
LV_UNUSED(e);
|
|
|
|
LV_LOG("scroll info: x:%3" LV_PRId32", y:%3" LV_PRId32", top:%3" LV_PRId32", "
|
|
"bottom:%3" LV_PRId32", left:%3" LV_PRId32", right:%3" LV_PRId32"\n",
|
|
lv_obj_get_scroll_x(panel),
|
|
lv_obj_get_scroll_y(panel),
|
|
lv_obj_get_scroll_top(panel),
|
|
lv_obj_get_scroll_bottom(panel),
|
|
lv_obj_get_scroll_left(panel),
|
|
lv_obj_get_scroll_right(panel)
|
|
);
|
|
}
|
|
|
|
static void button_event_cb(lv_event_t * e)
|
|
{
|
|
lv_obj_t * obj = lv_event_get_target_obj(e);
|
|
|
|
if(obj == save_button) {
|
|
saved_scroll_x = lv_obj_get_scroll_x(panel);
|
|
saved_scroll_y = lv_obj_get_scroll_y(panel);
|
|
}
|
|
else {
|
|
lv_obj_scroll_to(panel, saved_scroll_x, saved_scroll_y, LV_ANIM_ON);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Demonstrate how scrolling appears automatically
|
|
*/
|
|
void lv_example_scroll_1(void)
|
|
{
|
|
/*Create an object with the new style*/
|
|
lv_obj_t * scr;
|
|
scr = lv_screen_active();
|
|
panel = lv_obj_create(scr);
|
|
lv_obj_set_size(panel, 200, 200);
|
|
lv_obj_align(panel, LV_ALIGN_CENTER, 44, 0);
|
|
|
|
lv_obj_t * child;
|
|
lv_obj_t * label;
|
|
|
|
child = lv_obj_create(panel);
|
|
lv_obj_set_pos(child, 0, 0);
|
|
lv_obj_set_size(child, 70, 70);
|
|
label = lv_label_create(child);
|
|
lv_label_set_text(label, "Zero");
|
|
lv_obj_center(label);
|
|
|
|
child = lv_obj_create(panel);
|
|
lv_obj_set_pos(child, 160, 80);
|
|
lv_obj_set_size(child, 80, 80);
|
|
|
|
lv_obj_t * child2 = lv_button_create(child);
|
|
lv_obj_set_size(child2, 100, 50);
|
|
|
|
label = lv_label_create(child2);
|
|
lv_label_set_text(label, "Right");
|
|
lv_obj_center(label);
|
|
|
|
child = lv_obj_create(panel);
|
|
lv_obj_set_pos(child, 40, 160);
|
|
lv_obj_set_size(child, 100, 70);
|
|
label = lv_label_create(child);
|
|
lv_label_set_text(label, "Bottom");
|
|
lv_obj_center(label);
|
|
|
|
/* When LV_OBJ_FLAG_SCROLL_ELASTIC is cleared, scrolling does not go past edge boundaries. */
|
|
/* lv_obj_clear_flag(panel, LV_OBJ_FLAG_SCROLL_ELASTIC); */
|
|
|
|
/* Call `scroll_update_cb` while panel is being scrolled. */
|
|
lv_obj_add_event_cb(panel, scroll_update_cb, LV_EVENT_SCROLL, NULL);
|
|
|
|
/* Set up buttons that save and restore scroll position. */
|
|
save_button = lv_button_create(scr);
|
|
restore_button = lv_button_create(scr);
|
|
lv_obj_t * lbl;
|
|
lbl = lv_label_create(save_button);
|
|
lv_label_set_text_static(lbl, "Save");
|
|
lbl = lv_label_create(restore_button);
|
|
lv_label_set_text_static(lbl, "Restore");
|
|
lv_obj_align_to(save_button, panel, LV_ALIGN_OUT_LEFT_MID, -10, -20);
|
|
lv_obj_align_to(restore_button, panel, LV_ALIGN_OUT_LEFT_MID, -10, 20);
|
|
lv_obj_add_event_cb(save_button, button_event_cb, LV_EVENT_CLICKED, NULL);
|
|
lv_obj_add_event_cb(restore_button, button_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
#endif
|