![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LVGL
jiang_2018
这个作者很懒,什么都没留下…
展开
-
LVGL lv_chart图标控件(24)
lv_chart表格控件由背景、水平垂直分割线、数据线组成样式例子效果原创 2021-06-06 18:51:25 · 2821 阅读 · 8 评论 -
LVGL lv_page页面控件(23)
lv_page页面控件,是由2个lv_cont容器控件构成,其中一个容器作为lv_page页面控件的背景层,另一个容器作为lv_page页面控件的载体,此载体存放其他任何子对象,当此载体大小超过了lv_page控件自身大小,就可以在水平和垂直方向上滚动,把此容器或此载体简称为scrl。样式例子...原创 2021-05-11 14:08:18 · 2915 阅读 · 1 评论 -
LVGL lv_msgbox消息对话框(22)
lv_msgboxlv_msgbox由lv_cont容器、lv_label标签、lv_btnmatrix矩阵按键构成样式原创 2021-03-17 20:45:50 · 3645 阅读 · 0 评论 -
LVGL lv_calendar日历(21)
lv_calendar日历主要由上下2部分组成,上部分叫HEADER,下部分叫BODY样式/** Calendar parts*/enum { LV_CALENDAR_PART_BG, /**< Background and "normal" date numbers style */ LV_CALENDAR_PART_HEADER, /** Calendar header style */ LV_CALENDAR_PART_DAY_NAMES, /** Day nam原创 2021-03-17 20:45:33 · 852 阅读 · 0 评论 -
LVGL lv_gauge仪表盘(20)
lv_gaugelv_gauge仪表盘是lv_linemeter控件外加标签、指针、中心原点组成,标签个数、指针个数可设置,lv_linemeter中的非活跃刻度线变成了关键数值点。样式/*Styles*/enum { LV_GAUGE_PART_MAIN = LV_LINEMETER_PART_MAIN, LV_GAUGE_PART_MAJOR = _LV_LINEMETER_PART_VIRTUAL_LAST, LV_GAUGE_PART_NEEDLE, _LV_原创 2021-03-17 20:45:06 · 2883 阅读 · 2 评论 -
LVGL lv_linemeter刻度指示器(19)
lv_linemeter刻度指示器分为活跃刻度线和非活跃刻度线,利用可以设置为不同颜色,其中活跃刻度线还能设置渐变效果。样式/*Styles*/enum { LV_LINEMETER_PART_MAIN, _LV_LINEMETER_PART_VIRTUAL_LAST, _LV_LINEMETER_PART_REAL_LAST = _LV_OBJ_PART_REAL_LAST,};typedef uint8_t lv_linemeter_part_t;例子int v原创 2021-03-17 20:43:18 · 1509 阅读 · 0 评论 -
LVGL lv_btnmatrix矩阵按键(18)
lv_btnmatrixlv_btnmatrix不是真正的lv_btn按钮对象,但是有和lv_btn一样的点击效果,绘出相同按钮下比lv_btn占用内存小。原创 2021-03-17 20:42:47 · 2942 阅读 · 2 评论 -
LVGL lv_switch开关(17)
lv_switchlv_switch本质是lv_slider,先关API在lv_switch.h样式其实和lv_slider一样/** * Switch parts. */enum { LV_SWITCH_PART_BG = LV_BAR_PART_BG, /**< Switch background. */ LV_SWITCH_PART_INDIC = LV_BAR_PART_INDIC, /**< Switch原创 2021-01-13 10:49:38 · 1558 阅读 · 2 评论 -
LVGL lv_slider滑块(16)
lv_sliderlv_slider是由lv_bar进度条和外加旋钮的东西构成,当滑块被点击或拖拽导致进度值变化时会产生LV_EVENT_VALUE_CHANGED事件,若被持续的拖拽,那么LV_EVENT_VALUE_CHANGED也会持续产生,如果希望只获得最后进度值,则监听LV_EVENT_RELEASED事件来获得,相关API在lv_slider.h样式/** Built-in styles of slider*/enum { LV_SLIDER_PART_BG, /** Slide原创 2021-01-13 10:49:25 · 1500 阅读 · 5 评论 -
LVGL lv_line线条(15)
lv_line相关API在lv_line.h,默认原点在左上角,通过 lv_line_set_y_invert(line, true)接口来反转 y 轴,从而使左下角变为原点.例子static void task_cb(lv_task_t* task){ lv_obj_t * *dat = (lv_obj_t **)task->user_data; lv_line_set_y_invert(*dat, !lv_line_get_y_invert(*dat));}void lv_ex_l原创 2021-01-13 10:49:07 · 2812 阅读 · 1 评论 -
LVGL lv_checkbox复选框(14)
lv_checkbox复选框由背景、左边的按钮btn、右边的文本组成,相关API在lv_checkbox.h中样式/** Checkbox styles. */enum { LV_CHECKBOX_PART_BG = LV_BTN_PART_MAIN, /**< Style of object background. */ _LV_CHECKBOX_PART_VIRTUAL_LAST, LV_CHECKBOX_PART_BULLET = _LV_BTN_PART_RE原创 2021-01-13 10:25:13 · 1357 阅读 · 0 评论 -
LVGL lv_bar进度条(13)
lv_bar进度条包括背景和指示器(INDIC),高和宽决定是水平还是竖直进度条样式/** Bar parts */enum { LV_BAR_PART_BG, /** Bar background style. */ LV_BAR_PART_INDIC, /** Bar fill area style. */ _LV_BAR_PART_VIRTUAL_LAST};typedef uint8_t lv_bar_part_t;例子void lv_ex_bar_1(v原创 2021-01-13 10:24:22 · 1259 阅读 · 0 评论 -
LVGL lv_arc弧形(12)
lv_arclv_arc,3点方向为0度,6点方向为90度,总共范围0~360度,相关API在lv_arc.h圆弧类型enum { LV_ARC_TYPE_NORMAL, LV_ARC_TYPE_SYMMETRIC, LV_ARC_TYPE_REVERSE};typedef uint8_t lv_arc_type_t;样式有3部分样式/*Parts of the arc*/enum { LV_ARC_PART_BG = LV_OBJ_PART_MAIN,原创 2021-01-02 20:01:50 · 1025 阅读 · 0 评论 -
LVGL lv_led指示灯(11)
lv_led相关API在lv_led.h,亮度0~255样式/*Parts of LED*/enum { LV_LED_PART_MAIN = LV_OBJ_PART_MAIN,};typedef uint8_t lv_led_part_t;例子void lv_ex_led_1(void){ /*Create a LED and switch it OFF*/ static lv_style_t led1_style; lv_style_init(&led1原创 2021-01-02 17:01:52 · 1033 阅读 · 1 评论 -
LVGL lv_event事件(10)
lv_eventsLVGL 中任何对象都可以注册事件,相关类型在lv_obj.h中枚举enum { LV_EVENT_PRESSED, /**< The object has been pressed*/ LV_EVENT_PRESSING, /**< The object is being pressed (called continuously while pressing)*/ LV_EVENT_PRESS_LOST原创 2021-01-02 16:30:37 · 5647 阅读 · 0 评论 -
LVGL lv_btn 按钮(9)
lv_btnlv_btn按钮其实是lv_cont的复杂变体,可以包含子对象,常见的子对象是lv_label标签,相关API在lv_btn.h,lv_btn有6种状态/** Possible states of a button. * It can be used not only by buttons but other button-like objects too*/enum { LV_BTN_STATE_RELEASED, LV_BTN_STATE_PRESSED, L原创 2021-01-02 14:50:08 · 3857 阅读 · 0 评论 -
LVGL lv_cont 容器(8)
lv_contlv_cont作用是用来解决变化的子对象布局问题,比如父对象中的子对象增加或者减少时原先的布局为了美观其他子对象位置可能需要改变,手动调用lv_set_pos比较繁琐。所以lv_cont主要有Layout和Auto fit 2个特性来解决这个问题。相关API在lv_cont.hlayout 设置类型/** Container layout options*/enum { LV_LAYOUT_OFF = 0, /**< No layout */ LV_LAYOUT原创 2021-01-01 23:27:03 · 1467 阅读 · 0 评论 -
LVGL lv_font字体(7)
lv_fontfont的声明在lv_font.h中,lvgl自带了很多大小字库就是在这里声明,比如#define LV_FONT_DECLARE(font_name) extern lv_font_t font_name;#if LV_FONT_MONTSERRAT_8LV_FONT_DECLARE(lv_font_montserrat_8)#endif其中LV_FONT_MONTSERRAT_8在lv_conf.h来控制是否包含进去图标字体如下是lvgl自带图标字体,在lv_symbol原创 2021-01-01 20:51:18 · 11769 阅读 · 1 评论 -
LVGL lv_style样式(6)
lv_style每一个基础对象都会有一个lv_style样式,对于复杂些的对象,比如lv_btn按钮就会有多个样式,因为它是由多个基础对象组合而成。利用样式对对象进行重绘来达到UI设计效果,不同的样式来形成主题Theme,相关API在lv_obj_style_dec.h。例子lv_examples\src\lv_ex_style下有11个例子,其中第10个例子/** * Using the transitions style properties 过渡效果样式 */void lv_ex_st原创 2020-12-29 17:04:14 · 7602 阅读 · 4 评论 -
LVGL lv_label标签控件(5)
lv_label相关API在lv_label.h中文本模式enum { /*实时自动扩展标签对象大小来包裹文本内容*/ LV_LABEL_LONG_EXPAND, /**< Expand the object size to the text size*/ //标签对象宽度不变,当文本内容超过标签对象宽度,自动换行文本内容 LV_LABEL_LONG_BREAK, /**< Keep the object width, break the too l原创 2020-12-26 11:53:21 · 2867 阅读 · 4 评论 -
LVGL lv_obj基础对象(4)
lv_obj相关函数在头文件lv_obj.hlvgl所有专用控件(按钮,标签等)都是在lv_obj基础上再添加特性衍生出来,所以所有的对象都有一些共同的属性,如所有对象的删除都如下void lv_obj_del(lv_obj_t * obj);屏幕对象创建屏幕对象lv_obj_t * screen1 = lv_obj_create(NULL, NULL);获取当前活跃的屏幕对象static inline lv_obj_t * lv_scr_act(void)设置为当前活跃的屏幕对原创 2020-12-23 09:41:37 · 3513 阅读 · 0 评论 -
LVGL task任务系统(3)
lv_task.hlvgl自带任务管理系统,类似于软件定时器,并且支持优先级,相关API在lv_task.h中例子创建任务task,周期1000ms,优先级LV_TASK_PRIO_MID,回调里变量自加,加到10删除此任务。uint8_t test_data = 0;static void task_cb(lv_task_t* task){ uint8_t *dat = (uint8_t*)task->user_data; printf("tick: %d test_data %d\原创 2020-12-22 14:27:54 · 6793 阅读 · 3 评论 -
LVGL 移植记录(2)
准备代码之前clone下来的3份代码说明如下修改lv_conf.h和lv_ex_conf.h1.把lvgl目录下lv_conf_template.h和lv_examples目录下lv_ex_conf_template.h复制到如下路径并去掉文件名的_template2.把这2个文件中的#if 0改成#if 1lv_conf.h是对lvgl组件进行配置lv_ex_conf.h是对lvgl提供的例子进行配置,不是很重要其中lv_conf.h需要配置如下设置屏幕尺寸#define LV_HO原创 2020-12-22 11:15:08 · 1972 阅读 · 0 评论 -
LVGL PC模拟器(1)
最近要找个GUI,最终选择了LVGL,这里做下记录下载代码选择用visual studio IDE,去下面clonehttps://github.com/lvgl/lv_sim_vscode_sdl.gitclone下来目录如下(忽略si文件夹)visual_studio_2017_sdl文件下目录如下其中方框中的文件夹是空的(如果clone时没用–recursive),直接删掉分别去如下地址clonehttps://github.com/lvgl/lvgl.githttps://g原创 2020-12-17 16:58:04 · 3580 阅读 · 2 评论