页面列表控件
页面列表控件具有与页面控件类似的功能,并且预计使用更少的内存。页面列表控件在 y 轴上表现得像一个滚动条。当它在 y 轴上移动时,其子节点也会随之移动。可以设置两个切换控件,分别指示第一个和最后一个位置,以及两个边界线,分别指示顶部和底部。当第一个切换控件到达顶部时,它将从顶部移动到底部。最后一个切换控件到达底部时,它将从底部移动到顶部。这一特性使得子控件看起来比实际创建的数量更多。
用法
增加页面控件
开发者可以通过 gui_pagelist_increase_real_list_max(gui_pagelist_t *this, int16_t real_list_max)来增加真实列表的数量。
减少页面控件
开发者可以使用gui_pagelist_decrease_real_list_max(gui_pagelist_t *this, int16_t real_list_max)来减少真实列表的数量。
添加回调函数
此API gui_pagelist_add_list_update_cb(gui_pagelist_t *this, gui_pagelist_update_cb_t list_first_cb, gui_pagelist_update_cb_t list_last_cb) 用于在页列表上下滑动时添加更新回调,通常用于更新文本。
设定属性
开发者可以调用 gui_pagelist_set_att(gui_pagelist_t *this, int16_t real_list_max, int16_t show_list_max, int16_t list_gap_y, gui_switch_t *list_first, gui_switch_t *list_last)来设定页面列表控件的属性。
增加图片
通过此API gui_pagelist_add_scroll_bar(gui_pagelist_t *this, void *bar_pic, IMG_SOURCE_MODE_TYPE src_mode), 可以为pagelist控件添加滚动条图像,文件来源可以是内存地址。
创建控件
开发者可以利用 gui_pagelist_create(parent, filename, x, y, w, h) 函数来创建一个页面列表控件。它的高度将根据子控件的总高度进行设置。
示例
示例代码
#include "root_image/ui_resource.h"
#include "gui_img.h"
#include "gui_text.h"
#include "gui_switch.h"
#include "gui_pagelistview.h"
#include "gui_pagelist.h"
int8_t show_num = 4;
int16_t real_num = 20;
int16_t list_gap_y = 20;
int16_t index_first = 0;
int16_t index_last = 0;
void design_pagelist_test(void *parent)
{
pagelist_test = gui_pagelist_create(pagelistview_test, "pagelist", 0, 0, LCD_W, LCD_H);
for (int8_t i = 0; i < show_num; i++)
{
switch_pagelist_test[i] = gui_switch_create(pagelist_test, 83, 111 + i * (list_gap_y + 64), 288, 64,
ICON_TEXT_BASE_DARK_BIN, ICON_TEXT_BASE_DARK_BIN);
switch_pagelist_test[i]->off_hl_pic_addr = ICON_TEXT_BASE_BLUE_BIN;
switch_pagelist_test[i]->on_hl_pic_addr = ICON_TEXT_BASE_BLUE_BIN;
scroll_text_pagelist_test[i] = gui_scroll_text_create(switch_pagelist_test[i],
"scroll_text_record_files", 0, 0, 128, FONT_H_32);
gui_scroll_text_set(scroll_text_pagelist_test[i], files_name_test[i],
GUI_FONT_SRC_BMP, gui_rgb(UINT8_MAX, UINT8_MAX, UINT8_MAX), strlen(files_name_test[i]),
FONT_H_32);
gui_scroll_text_scroll_set(scroll_text_pagelist_test[i], SCROLL_X, 0, 0, 5000, 0);
gui_obj_add_event_cb(switch_pagelist_test[i], (gui_event_cb_t)swtich_pagelist_touch_cb, GUI_EVENT_1,
NULL);
gui_obj_add_event_cb(switch_pagelist_test[i], (gui_event_cb_t)swtich_pagelist_touch_cb, GUI_EVENT_2,
NULL);
}
index_first = 0;
index_last = MAX_SHOW_FILE_LIST_NUM - 1;
gui_pagelist_set_att(pagelist_test, real_num, show_num, list_gap_y, switch_pagelist_test[0],
switch_pagelist_test[MAX_SHOW_FILE_LIST_NUM - 1]);
gui_pagelist_add_list_update_cb(pagelist_test,
(gui_pagelist_update_cb_t)pagelist_test_update_list_first_cb,
(gui_pagelist_update_cb_t)pagelist_test_update_list_last_cb);
}
API
Typedefs
-
typedef void (*gui_pagelist_update_cb_t)(void *obj, void *list)
Pagelist widget structure.
Functions
-
void gui_pagelist_increase_real_list_max(gui_pagelist_t *this, int16_t real_list_max)
increase number of real lists
- 参数:
this – pagelist widget
real_list_max – number to increase
- 返回:
-
void gui_pagelist_decrease_real_list_max(gui_pagelist_t *this, int16_t real_list_max)
decrease number of real lists
- 参数:
this – pagelist widget
real_list_max – number to decrease
- 返回:
-
void gui_pagelist_add_list_update_cb(gui_pagelist_t *this, gui_pagelist_update_cb_t list_first_cb, gui_pagelist_update_cb_t list_last_cb)
add update callback when pagelist slide up and down. to update text typically
- 参数:
this – pagelist widget
list_first_cb – update callback of the top show list
list_last_cb – update callback of the botoom show list
- 返回:
-
void gui_pagelist_set_att(gui_pagelist_t *this, int16_t real_list_max, int16_t show_list_max, int16_t list_gap_y, gui_switch_t *list_first, gui_switch_t *list_last)
set attribute for a pagelist widget
- 参数:
this – pagelist widget
real_list_max – real quality of file lists to show. larger than show_list_max typically
show_list_max – quality of switch widgets, which should be created as child nodes of this pagelist widget
list_gap_y – y gap between two show lists
list_first – index of the top show list
list_last – index of the bottom show list
- 返回:
-
void gui_pagelist_add_scroll_bar(gui_pagelist_t *this, void *bar_pic, IMG_SOURCE_MODE_TYPE src_mode)
add a scroll bar picture for a pagelist widget, file source is memory address
- 参数:
this – pagelist widget
bar_pic – bar picture
- 返回:
-
gui_pagelist_t *gui_pagelist_create(void *parent, const char *name, int16_t x, int16_t y, int16_t w, int16_t h)
create a pagelist widget
- 参数:
parent – parent of this widget
name – name of this widget
x – x of this widget
y – y of this widget
w – w of this widget
h – h of this widget
parent –
name –
data –
x –
y –
w –
h –
- 返回:
gui_pagelist_t*
- 返回:
gui_pagelist_t*
-
struct gui_pagelist_t
- #include <gui_pagelist.h>
Public Members
-
int8_t show_list_max
-
int16_t real_list_max
-
gui_switch_t *list_first
-
gui_switch_t *list_last
-
int16_t x_init
-
int16_t y_init
-
int16_t x_stop_scroll
-
int16_t y_stop_scroll
-
int16_t list_gap_y
-
int16_t show_border_top
-
int16_t show_border_bottom
-
bool h_set_done
-
gui_pagelist_update_cb_t update_list_first_cb
-
gui_pagelist_update_cb_t update_list_last_cb
-
int16_t list_count
-
IMG_SOURCE_MODE_TYPE src_mode
-
int8_t show_list_max