LVGL V8百问网学习笔记

添加例程

在这里插入图片描述
右键将把相应的文件,添加到对应的工程目录中
在这里插入图片描述
在这里插入图片描述
将menu_test_demo.c文件修改为如下

/*********************
 *      INCLUDES
 *********************/
#include "../../lv_100ask_teach_demos.h"
#if LV_USE_MENU_TEST_DEMO
#include "menu_test_demo.h"
/*********************
 *      DEFINES
 *********************/

/**********************
 *  STATIC VARIABLES
 **********************/
void MENU_TEST_GUI_APP(void)
{
    
}
#endif /* LV_USE_MENU_TEST_DEMO */

将menu_test_demo.h文件修改为如下

#ifndef MENU_TEST_DEMO_H
#define MENU_TEST_DEMO_H

#ifdef __cplusplus
extern "C" {
#endif

/*********************
 *      INCLUDES
 *********************/
#include "../lv_100ask_teach_demos.h"

/*********************
 *      DEFINES
 *********************/

/**********************
 *      TYPEDEFS
 **********************/

/**********************
 * GLOBAL PROTOTYPES
 **********************/
void MENU_TEST_GUI_APP(void);

/**********************
 *      MACROS
 **********************/

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* MENU_TEST_DEMO_H */

在lv_100ask_teach_demos.h包含例程的头文件menu_test_demo.h,使用相对路径
在这里插入图片描述
在头文件lv_100ask_teach_demos_conf.h中定义宏开关USE_MENU_TEST_DEMO
在这里插入图片描述
main函数中调用测试函数MENU_TEST_GUI_APP

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
{
    /*Initialize LittlevGL*/
    lv_init();

    /*Initialize the HAL for LittlevGL*/
    lv_win32_init(hInstance, SW_SHOWNORMAL, 320, 240, NULL);

    /*Output prompt information to the console, you can also use printf() to print directly*/
    LV_LOG_USER("LVGL initialization completed!");
    //printf("www.100ask.net: Lvgl initialization complete!\n");


    /*Run the demo*/
    //lv_100ask_demo_course_2_1_1();    // 基础对象(lv_obj),"Hello, LVGL!"
	//lv_100ask_demo_course_2_2_2();    // 基础对象的大小(size)
	//lv_100ask_demo_course_2_2_3();    // 基础对象的位置(position)
	//lv_100ask_demo_course_2_2_4();    // 基础对象的盒子模型(border-box)
	//lv_100ask_demo_course_2_2_5();    // 基础对象的样式(styles)
	//lv_100ask_demo_course_2_2_6();    // 基础对象的事件(events)、事件冒泡

	//lv_100ask_demo_course_3_1_1();    // 组件(widgets): 标签(label)的用法
	//lv_100ask_demo_course_3_1_2();    // 组件(widgets): 标签(label),显示中文
	//lv_100ask_demo_course_3_2_1();    // 组件(widgets): 按钮(lv_btn)的用法
	//lv_100ask_demo_course_3_3_1();    // 组件(widgets): 使用物理按键代替触摸(groups)
	//lv_100ask_demo_course_3_4_1();    // 组件(widgets): 开关(lv_switch)的用法
	//lv_100ask_demo_course_3_5_1();    // 组件(widgets): 复选框(lv_checkbox)的用法
	//lv_100ask_demo_course_3_6_1();    // 组件(widgets): 下拉列表(lv_dropdown))的用法
	//lv_100ask_demo_course_3_7_1();    // 组件(widgets): 滚轮(lv_roller)的用法
	//lv_100ask_demo_course_3_8_1();    // 组件(widgets): 进度条(lv_bar)的用法
	//lv_100ask_demo_course_3_9_1();    // 组件(widgets): 进度条(lv_slider)的用法
    //lv_100ask_page_manager_simple_test();
	MENU_TEST_GUI_APP();

    while(!lv_win32_quit_signal) {
        /* Periodically call the lv_task handler.
         * It could be done in a timer interrupt or an OS task too.*/
        lv_task_handler();

        usleep(10000);       /*Just to let the system breath*/
    }
    return 0;
}

页面管理器使用

配置

下载lv_lib_100ask_masterf放在图中所示文件夹,代码下载地址
在这里插入图片描述
该文件包含页面管理器的库函数

创建ccd_test_demo文件夹放在图中位置,ccd_test_demo.c需要使用lv_100ask_page_manager.c中的页面管理器。
在这里插入图片描述
ccd_test2_demo.c文件
在这里插入图片描述
ccd_test2_demo.h文件
在这里插入图片描述
lv_lib_100ask.h文件中#include “test/ccd_test2_demo/ccd_test2_demo.h”
在这里插入图片描述
lv_lib_100ask_conf.h文件中 #define CCD_TEST 1
在这里插入图片描述
最后在lv_lib_100ask_conf_internal.h文件中添加方框中的程序
在这里插入图片描述
经过以上步骤之后看就可以使用页面管理器中的接口函数了

程序修改

页面管理器库函数

修改函数lv_100ask_page_manager_set_open_page,不再调用返回按钮创建函数lv_page_back_btn_create,让用户自定义按钮样式

  if (lv_obj_get_child_cnt(obj) == 0)
  {
        page->init(obj);     //传入obj参数执行函数指针 page->init(obj);初始化页面,创建返回按钮
  }

用户自定义程序

主页面,不需要返回按键
void init_main_page(lv_obj_t * page)
{
}
子页面
void init_page1(lv_obj_t * page)
{
	lv_obj_t * cont = lv_obj_create(parent);
	
	//返回按钮
    lv_obj_t *back_btn=lv_btn_create(cont);

    lv_obj_set_size(back_btn, 60,40);
    lv_obj_set_pos(back_btn,250,30);

    lv_obj_t *label=lv_label_create(back_btn);
    lv_obj_set_style_text_font(label,&ch_word,0);       //设置ch_word为当前label字体
    lv_label_set_text(label, "返回");
    lv_obj_center(label);

    lv_obj_add_event_cb(back_btn, lv_page_back_event_cb, LV_EVENT_CLICKED, 		lv_obj_get_parent(parent));
}

注册按键事件回调函数lv_page_back_event_cb,功能为返回主页面

### 回答1: LVGL V8 是一款高性能嵌入式图形库,它的中文手册对于中国开发者来说是一份非常重要的资料。LVGL V8 中文手册详细介绍了该库的各种特性、使用方法和实现原理。其中包括了 LVGL V8 的基础结构、对象、图元、样式等基础概念,还有详细的 API 参考和使用示例。 手册开头介绍了 LVGL V8 的基础知识,包括该库的基础设计、适用范围、适配平台等内容。接着,手册通过一个简单的 Hello World 项目介绍了如何在开发板上使用 LVGL V8,还介绍了如何使用 LVGL 的物理内存布局优化机制,避免使用较大的内存块。 在 LVGL V8 的中文手册中,对象是最核心的概念,手册详细介绍了各种对象的类型与用法,如基础对象、容器对象、文本对象、图像对象等。手册还介绍了 LVGL 的事件模型,解释了事件回调函数的使用方法和意义。除此之外,手册还介绍了 LVGL 的样式系统、动画框架等细节内容。 总体来说,LVGL V8 的中文手册非常详细,对于希望在嵌入式平台上使用 LVGL 开发界面的开发者来说,是一份非常重要的资料。手册详细介绍了该库的各种概念和细节,并提供了丰富的使用示例,非常适合初学者和专业开发人员使用。 ### 回答2: lvgl v8中文手册是一个相当详细、全面的用户手册,该手册主要是为了方便开发者在使用lvgl v8时可以快速入门,解决在实际开发过程中所遇到的各种问题。以下是本人对lvgl v8中文手册的一些了解和使用体验。 首先,lvgl v8中文手册的内容十分详细和系统,涉及的知识点涵盖了lvgl v8的核心概念、基础组件、布局、主题、动画、图像等方面的内容,而且每一章节都有大量的实例代码和图例,方便用户理解和学习。 其次,lvgl v8中文手册的组织结构十分清晰,每个章节都有明确的标题和目录,使得用户可以轻松找到所需的内容。而且,手册中的例子和代码片段也很详细,可以帮助用户更加深入地理解各个组件的使用方法和实现原理。 另外,lvgl v8中文手册还给出了各种样式、主题以及动画效果,这些都是使用lvgl v8时需要注意的一些方面,而且lvgl v8中文手册给出的解决方案和最佳实践也很实用,可以帮助用户在开发过程中避免一些常见的错误。 总之,lvgl v8中文手册是一个非常优秀的开发文档,对需要使用lvgl v8的开发者来说是一个不可或缺的参考工具,对于刚开始接触和了解lvgl v8的用户,这个手册更是一个非常好的教程,可以帮助他们顺利入门。 ### 回答3: LVGL v8是一款基于C语言开发的开源GUI库,具有轻量级、高效、可裁剪、跨平台等特点,适用于各种嵌入式应用的UI设计和开发。其中文手册详细介绍了LVGL v8库的使用方法、API接口、示例代码等内容,可以很好地帮助开发人员学习和掌握该库的使用。 手册的目录结构清晰、条理分明,涵盖了LVGL v8库的各个方面,包括库的概述、主循环、基本对象、容器对象、图形对象、矢量对象、特效、输入和操作、图像和字体、样式、动画、调试等内容。每个章节都以简洁明了的语言和示例代码的形式进行介绍,非常易于理解和实践。 在手册中,我们可以了解到LVGL v8库是如何创建窗口和控件、设置样式和属性、注册事件回调函数、处理输入事件等等。在对于各种对象的使用中,将以控件为主展示其使用方法。例如,对于文本框,手册详细介绍了其创建方式、风格设置、插入文本、删除文本、获取文本内容等相关功能。除此之外,手册中还介绍了LVGL v8库的特效、输入和操作、图像和字体、样式、动画等方面的内容。 总体上,LVGL v8中文手册内容丰富、详细全面、易于理解和操作。对于开发人员而言,该手册是一本不可多得的优秀参考书,可以帮助他们轻松地掌握LVGL v8的使用,并在实际项目中进行灵活高效的UI设计开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值