Code
The code block(s) should be between ```c
and ```
tags:
/*You code here*/
int on_create_pu_config()
{
static struct timeval flush_start = {0}, flush_end = {0};
gettimeofday(&flush_start, NULL);
#if DEBUG_IMAGE_PARSE
ic_img_right_normal = (void *)parse_image_from_file(LV_IMAGE_PATH "ic_right_normal.png");
ic_img_right_focus = (void *)parse_image_from_file(LV_IMAGE_PATH "ic_right_focus.png");
ic_img_low_light = (void *)parse_image_from_file(LV_IMAGE_PATH "ic_low_light.png");
ic_img_high_light = (void *)parse_image_from_file(LV_IMAGE_PATH "ic_high_light.png");
printf("on_create_pu_config ====> lvgl load image by parse png!!\n");
#else
LV_IMG_DECLARE(ic_right_normal);
ic_img_right_normal = &ic_right_normal;
LV_IMG_DECLARE(ic_right_focus);
ic_img_right_focus = &ic_right_focus;
LV_IMG_DECLARE(ic_low_light);
ic_img_low_light = &ic_low_light;
LV_IMG_DECLARE(ic_high_light);
ic_img_high_light = &ic_high_light;
printf("on_create_pu_config ====> lvgl load image by c file source!!\n");
#endif
if (!pu_config_created)
{
memset(&_pu_config_page_params, 0, sizeof(pu_config_page_para_t));
ui_obj_interface_t *menu_page_obj = get_page(P_PAGE_MENU);
lv_obj_t *parent = menu_page_obj->info.user_data;
_pu_config_page_params.ui.base_pu_config_page_obj = lv_obj_create(parent);
apply_obj_style(_pu_config_page_params.ui.base_pu_config_page_obj);
lv_obj_set_size(_pu_config_page_params.ui.base_pu_config_page_obj, lv_pct(100), lv_pct(80));
lv_obj_align_to(_pu_config_page_params.ui.base_pu_config_page_obj, parent, LV_ALIGN_TOP_MID, 0, lv_pct(20));
set_obj_bg_color_rgba(_pu_config_page_params.ui.base_pu_config_page_obj, 240, 240, 240, LV_OPA_COVER, LV_PART_MAIN);
lv_obj_t *pu_config_main_page = lv_obj_create(_pu_config_page_params.ui.base_pu_config_page_obj);
lv_obj_set_size(pu_config_main_page, lv_pct(70), lv_pct(100));
apply_obj_style(pu_config_main_page);
lv_obj_set_style_bg_color(pu_config_main_page, lv_color_hex(0xf0f0f0), LV_STATE_DEFAULT);
lv_obj_center(pu_config_main_page);
for (int i = 0; i < 5; i++)
{
lv_obj_t *pu_config_item = lv_obj_create(pu_config_main_page);
lv_obj_set_size(pu_config_item, lv_pct(100), LV_SIZE_CONTENT);
apply_obj_style(pu_config_item);
set_obj_bg_color_rgba(pu_config_item, 0, 0, 0, LV_OPA_0, LV_PART_MAIN);
lv_obj_align_to(pu_config_item, pu_config_main_page, LV_ALIGN_TOP_MID, 0, 70 * (i + 1));
lv_label_t *pu_config_item_title = lv_label_create(pu_config_item);
lv_label_set_text(pu_config_item_title, pu_config_config_title[i]);
lv_obj_align_to(pu_config_item_title, pu_config_item, LV_ALIGN_LEFT_MID, 0, 0);
lv_obj_set_style_text_color(pu_config_item_title, lv_color_hex(0x666666), LV_STATE_DEFAULT);
lv_obj_set_style_text_color_filtered(pu_config_item_title, lv_color_hex(0x666666), LV_STATE_DEFAULT);
lv_obj_set_style_text_color(pu_config_item_title, lv_color_hex(0xFF7F00), LV_STATE_FOCUSED);
lv_obj_set_style_text_color_filtered(pu_config_item_title, lv_color_hex(0xFF7F00), LV_STATE_FOCUSED);
pu_config_items[i].item_title = pu_config_item_title;
if (i == 0)
{
lv_obj_t *process_obj = create_custome_process_bar(pu_config_item, 5, ic_img_low_light, ic_img_high_light);
lv_obj_align_to(process_obj, pu_config_item, LV_ALIGN_RIGHT_MID, 0, 0);
set_obj_bg_color_rgba(process_obj, 240, 240, 240, LV_OPA_0, LV_PART_MAIN);
pu_config_items[i].item_ctrl = process_obj;
set_custome_process_bar_state(pu_config_items[i].item_ctrl, 2, false);
pu_config_items[i].item_value = 2;
pu_config_items[i].item_type = ITEM_PROC_BAR;
}
else if (i == 1 || i == 2 || i == 3)
{
lv_obj_t *m_switch_obj = create_custom_switch_bar(pu_config_item);
lv_obj_align_to(m_switch_obj, pu_config_item, LV_ALIGN_RIGHT_MID, 0, 0);
lv_obj_align_to(m_switch_obj, pu_config_item, LV_ALIGN_RIGHT_MID, -250, 0);
pu_config_items[i].item_ctrl = m_switch_obj;
pu_config_items[i].item_type = ITEM_SWIT_BAR;
pu_config_items[i].item_value = 0;
}
else if (i == 4)
{
lv_obj_t *pu_language_setting = lv_obj_create(pu_config_item);
apply_obj_style(pu_language_setting);
lv_obj_set_size(pu_language_setting, 26, 30);
lv_obj_set_style_bg_color(pu_language_setting, lv_color_hex(0xf0f0f0), LV_STATE_DEFAULT);
lv_obj_set_style_bg_img_src(pu_language_setting, ic_img_right_normal, LV_STATE_DEFAULT);
lv_obj_set_style_bg_img_src(pu_language_setting, ic_img_right_focus, LV_STATE_FOCUSED);
lv_obj_align_to(pu_language_setting, pu_config_item, LV_ALIGN_RIGHT_MID, -280, 0);
pu_config_items[i].item_ctrl = pu_language_setting;
pu_config_items[i].item_type = ITEM_NEW_PAGE;
}
pu_config_items[i].focuse = false;
}
gettimeofday(&flush_end, NULL);
printf("on_create_pu_config create time : %d ms\n", (flush_end.tv_sec * 1000 + flush_end.tv_usec / 1000) - (flush_start.tv_sec * 1000 + flush_start.tv_usec / 1000));
pu_config_created = true;
}
## Screenshot and/or video
If possible, add screenshots and/or videos about the current state.
printf result : on_create_pu_config create time : 1052 ms
Very slowly before flsuh display memery ! just layout on LVGL. How to make it fast??
Sometime,The layout is not in the correct position.
My project screen size is 720x1280 and rotated = LV_DISP_ROT_90 thanks for your help!