事件处理回调函数
static uint32_t btn_cnt = 1;
static lv_obj_t* main_page;
static lv_obj_t* menu;
static void float_btn_event_cb(lv_event_t* e)
{
LV_UNUSED(e);
btn_cnt++;
lv_obj_t* cont;
lv_obj_t* label;
lv_obj_t* sub_page = lv_menu_page_create(menu, NULL); // 创建菜单界面
cont = lv_menu_cont_create(sub_page); // 在菜单界面创建cont容器对象
label = lv_label_create(cont); // 在cont容器创建label对象
lv_label_set_text_fmt(label, "Hello, I am hiding inside %i", btn_cnt); // 设置label显示内容
cont = lv_menu_cont_create(main_page); // 在菜单界面创建cont容器对象
label = lv_label_create(cont); // 在cont容器创建label对象
lv_label_set_text_fmt(label, "Item %i", btn_cnt); // 设置label显示内容
lv_menu_set_load_page_event(menu, cont, sub_page); // 加载cont项到menu,并设置点击后跳转的界面sub_page
lv_obj_scroll_to_view_recursive(cont, LV_ANIM_ON); // Scroll to an object until it becomes visible on its parent
}
创建菜单及浮点按键
static void lv_example_menu_4(void)
{
/*Create a menu object*/
menu = lv_menu_create(lv_scr_act()); // 创建菜单对象
lv_obj_set_size(menu, lv_disp_get_hor_res(NULL), lv_disp_get_ver_res(NULL)); // 设置大小
lv_obj_center(menu); // 居中显示
lv_obj_t* cont;
lv_obj_t* label;
/*Create a sub page*/
lv_obj_t* sub_page = lv_menu_page_create(menu, NULL); // 创建菜单子项
cont = lv_menu_cont_create(sub_page); // 在菜单子项创建cont容器对象
label = lv_label_create(cont); // 在cont容器对象上创建label对象
lv_label_set_text(label, "Hello, I am hiding inside the first item"); // 设置label显示内容
/*Create a main page*/
main_page = lv_menu_page_create(menu, NULL); // 创建菜单界面
cont = lv_menu_cont_create(main_page); // 在main_page上创建cont容器对象
label = lv_label_create(cont); // 在cont容器对象上创建label对象
lv_label_set_text(label, "Item 1"); // 设置label显示内容
lv_menu_set_load_page_event(menu, cont, sub_page); // 加载cont项到menu,并设置点击后跳转的界面sub_page
lv_menu_set_page(menu, main_page); // 设置菜单显示主界面
/*Create floating btn*/
lv_obj_t* float_btn = lv_btn_create(lv_scr_act()); // 创建按键对象
lv_obj_set_size(float_btn, 50, 50); // 设置大小
lv_obj_add_flag(float_btn, LV_OBJ_FLAG_FLOATING); // 添加浮动按键标志LV_OBJ_FLAG_FLOATING
lv_obj_align(float_btn, LV_ALIGN_BOTTOM_MID, -10, -10); // LV_ALIGN_BOTTOM_MID方式对齐
lv_obj_add_event_cb(float_btn, float_btn_event_cb, LV_EVENT_CLICKED, menu); // 添加LV_EVENT_CLICKED事件,并设置自定义用户数据为menu对象
lv_obj_set_style_radius(float_btn, LV_RADIUS_CIRCLE, 0); // 设置为圆形按键风格
lv_obj_set_style_bg_img_src(float_btn, LV_SYMBOL_PLUS, 0); // 添加按键LV_SYMBOL_PLUS图标
lv_obj_set_style_text_font(float_btn, lv_theme_get_font_large(float_btn), 0); // 设置字体
}
运行效果