![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LVGL
Bob_1993
路漫漫其修远兮,吾将上下而求索。。。
展开
-
LVGL V8自定义实现radio button
这几天由于开发任务的需要,需要自定义实现一个radio button的功能,所以通过研究button添加LV_OBJ_FLAG_CHECKABLE属性实现了一个简单的radio button,下面直接上代码。原创 2023-04-04 15:49:57 · 1425 阅读 · 1 评论 -
LVGL V8之color selector
LVGL V8实现color selector色选器原创 2022-12-07 16:53:37 · 887 阅读 · 0 评论 -
LVGL V8学习之键盘按键样式重绘(二)
这一篇继续研究一下基于btnmatrix的键盘按键重绘,是对上一篇LVGL V8学习之键盘按键样式重绘(一)的代码的优化,还是通过codeblock来模拟代码的运行,代码如下:// 按键矩阵的事件回调函数static void btnmatrix_event_callback(lv_event_t * event){ if (event == NULL) { printf("[%s:%d] event is NULL\n", __FUNCTION__, __LINE原创 2022-03-07 18:12:00 · 4220 阅读 · 1 评论 -
LVGL V8学习之进度条(bar控件)
这一篇来研究下LVGL V8下进度条(bar控件)的使用,还是通过codeblock来模拟代码的运行// bar对象动画回调函数static void obj_bar_anim_exec_callback(void * bar, int32_t value){ if (bar != NULL) { lv_bar_set_value((lv_obj_t *)bar, value, LV_ANIM_ON); // 设置进度条对象的值原创 2022-03-07 15:11:48 · 4392 阅读 · 5 评论 -
LVGL V8学习之colorwheel色轮
这一篇来研究下LVGL V8下colorwheel色轮的使用,这个色轮是HSV样式的,下面的代码通过创建色轮对象,然后添加对象事件处理,移动旋钮,显示对应的颜色和RGB值还是通过codeblock来模拟代码的运行,代码如下:// 事件回调函数static void colorwheel_event_callback(lv_event_t * event){ if (event == NULL) { printf("[%s:%d] event is NULL\n"原创 2022-01-05 10:32:58 · 1799 阅读 · 6 评论 -
LVGL V8下png图片缩放显示
这几天在研究LVGL V8下显示png图片和缩放问题1、软件硬件环境SSD202D平台Linux系统2、相关依赖库相关依赖的库主要包含lv_lib_png和lodepng下载链接:lv_lib_png3、相关代码这里主要是演示从文件加载显示png图片,并缩放显示,主要是使用lv_img_set_zoom这个接口实现缩放显示,以下是关键代码// img对象设置png图片自适应显示static void lv_obj_img_png_set_zoom(lv_原创 2021-11-15 20:25:20 · 7614 阅读 · 7 评论 -
LVGL V8学习之键盘按键样式重绘(一)
这一篇研究一下基于btnmatrix的键盘按键重绘,还是通过codeblock来模拟代码的运行,代码如下:static const char * kb_map[] ={ "1","2", "3","\n", "4", "5", "6", "\n", "7", "8", "9" ,"\n", ".","0",LV_SYMBOL_BACKSPACE,""};static void textarea_event_callback(lv_event_t * event){ if (原创 2021-09-07 18:30:23 · 2717 阅读 · 3 评论 -
LVGL8之自定义密码输入键盘
这一篇研究一下自定义密码输入键盘,还是通过codeblock来模拟代码的运行,代码如下:#include <stdio.h>#include <string.h>#include "lvgl/lvgl.h"#include "lv_gui_password_keyboard.h"static lv_obj_t *pwd_main_cont = NULL; // 密码输入界面的容器static lv_obj_t *hint_label = NULL; // 密码提示原创 2021-09-03 16:53:02 · 5044 阅读 · 3 评论 -
LVGL8的窗口切换方式
LVGL8实现两个窗口的切换方式:方法一:切换到窗口2时,删除窗口1的容器,这样可以删除窗口1下的所有子对象,这种方式适用于运存较小的设备方法二:显示窗口1之前给窗口2的容器设置LV_OBJ_FLAG_HIDDEN隐藏属性,显示窗口2之前给窗口1的容器设置LV_OBJ_FLAG_HIDDEN隐藏属性还是通过codeblock来模拟代码的运行,代码如下:#define HIDDEN_WIN (0)static lv_obj_t *win1_contanier = NULL;static原创 2021-08-27 19:36:02 · 15069 阅读 · 16 评论 -
LVGL8学习之msgbox
这一篇来演示一下lvgl8下msgbox的使用,还是通过codeblock来模拟代码的运行,代码如下:static void msgbox_event_callback(lv_event_t * event){ lv_event_code_t code = lv_event_get_code(event); lv_obj_t * msgbox = lv_event_get_current_target(event); if ((code == LV_EVENT_VALUE_原创 2021-08-27 17:30:03 · 2484 阅读 · 0 评论 -
LVGL8学习之Grid(简单网格布局)
这一篇来学习一下简单的网格布局grid,主要的步骤如下:(1)创建对象,给对象添加网格布局还是通过codeblock来模拟代码的运行,代码如下:void lv_layout_simple_grid(){ // 定义行和列描述符的数组,数组的最后一个元素必须是LV_GRID_TEMPLATE_LAST static lv_coord_t col_dsc[] = {70, 70, 70, LV_GRID_TEMPLATE_LAST}; // 3行,分别为:70,70,70 像原创 2021-08-27 15:29:42 · 3929 阅读 · 1 评论 -
LVGL8学习之flex grow(弹性增长)
这一篇来学习一下flex grow(弹性增长),还是通过codeblock来模拟代码的运行,代码如下:void lv_demonstrate_flex_grow(){ lv_obj_t * cont = lv_obj_create(lv_scr_act()); // 基于屏幕创建一个cont容器对象 if (cont == NULL) { return; } lv_obj_set_size(cont, 400, 220); // 设置对象大小原创 2021-08-27 14:37:41 · 2308 阅读 · 0 评论 -
LVGL8制作简易时钟
通过这两天对LVGL8的部分控件和样式的学习,自己制作了一个简易时钟,可显示时间,日期,星期,用到的主要有样式,布局等对象typedef struct _lv_clock{ lv_obj_t *time_label; // 时间标签 lv_obj_t *date_label; // 日期标签 lv_obj_t *weekday_label; // 星期标签}lv_clock_t;static void clock原创 2021-08-27 13:20:10 · 10564 阅读 · 11 评论 -
LVGL8学习之Flex布局2
这一篇来学习Flex布局的把项目按行包裹,且让他们周围的控件平均。(Arrange items in rows with wrap and even spacing),还是通过codeblock来模拟代码的运行,代码如下:void lv_flex_layout_test2(){ static lv_style_t style; lv_style_init(&style); // 初始化style lv_style_set_layout(&style, LV_L原创 2021-08-26 20:29:42 · 2196 阅读 · 0 评论 -
LVGL8学习之row and a column layout with flexbox
这一篇来学习一下基于flexbox(柔性盒子)简单行和列布局,还是通过codeblock来模拟代码的运行,可设置layout对象内部的水平和竖直填充,以及布局内各item之间的间隔填充代码如下:void lv_flex_layout_test(){ lv_obj_t * container_row1 = lv_obj_create(lv_scr_act()); // 创建一个对象container_row1 if (container_row1 == NULL) {原创 2021-08-26 17:07:31 · 2042 阅读 · 0 评论 -
LVGL8学习之扩展当前主题(Extending the current theme)
这一篇来学习一下如何扩展当前主题,还是通过codeblock来模拟代码的运行,代码如下:static lv_style_t g_style_btn;/*当已经添加基本主题的样式添加新样式时,调用次函数*/static void new_theme_apply_cb(lv_theme_t * th, lv_obj_t * obj){ LV_UNUSED(th); if(lv_obj_check_type(obj, &lv_btn_class)) {原创 2021-08-26 14:42:09 · 1489 阅读 · 0 评论 -
LVGL8学习之add styles to parts and states
这一篇来学习一下add styles to parts and states,还是通过codeblock来模拟代码的运行,代码如下:void lv_add_style_to_parts_and_states_test(){ static lv_style_t style_indic; lv_style_init(&style_indic); lv_style_set_bg_color(&style_indic, lv_palette_lighten(LV_P原创 2021-08-26 14:33:18 · 421 阅读 · 0 评论 -
LVGL8学习之local styles
这一篇来学习一下给对象添加local style,还是通过codeblock来模拟代码的运行,代码如下:void lv_local_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_set_bg_color(&style, lv_palette_main(LV_PALETTE_GREEN)); lv_style_set_border_color(&sty原创 2021-08-26 14:23:48 · 632 阅读 · 0 评论 -
LVGL8学习之multiple styles
这一篇来学一下multiple styles,多种样式的组合使用代码如下:void lv_multiple_style_test(){ static lv_style_t style_base; lv_style_init(&style_base); lv_style_set_bg_color(&style_base, lv_palette_main(LV_PALETTE_LIGHT_BLUE)); lv_style_set_border_colo原创 2021-08-26 12:07:03 · 572 阅读 · 0 评论 -
LVGL8学习之transition
这一篇来学一下transition默认情况下,当一个对象改变状态时新的状态和属性会被立即设置。但是,使用transition转换,可以在状态更改时播放动画。例如:按下Button,其背景色可以播放超过300ms的动画颜色。转换的参数存储在样式中。可以设置:(1)转换的时间(2)开始转换前的延时时间(3)动画的路径(4)动画的属性可以为每个状态定义转换属性。例如:在默认状态下设置500ms的转换时间将意味着当对象转到默认状态时,将应用500ms的转换时间。在按下状态下设置100ms的转原创 2021-08-26 12:04:04 · 1135 阅读 · 0 评论 -
LVGL8学习之Line Style
这一篇来学习一下LineStyle的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_line_style_test(){ static lv_style_t style; lv_style_init(&style); // 样式初始化 lv_style_reset(&style); // 重置样式 lv_style_set_line_color(&style, lv_palette_main(LV_PALETT.原创 2021-08-26 11:33:22 · 722 阅读 · 0 评论 -
LVGL8学习之Text Style
这一篇来学习一下Text Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_text_style_test(){ static lv_style_t style; lv_style_init(&style); // 样式初始化 lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式圆角 lv_style_se原创 2021-08-26 11:29:07 · 1409 阅读 · 0 评论 -
LVGL8学习之Image Styles
这一篇来学习一下Image Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_image_style_test(){ static lv_style_t style; LV_IMG_DECLARE(img_cogwheel_argb); // 声明图片变量 lv_style_init(&style); // 样式初始化 lv_style_reset(&style); // 重置样式 lv_style_.原创 2021-08-25 20:05:51 · 1137 阅读 · 0 评论 -
LVGL8学习之Shadow Styles
这一篇来学习一下Shadow Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_shadow_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式圆角 lv_style_set_bg_原创 2021-08-25 18:39:09 · 577 阅读 · 0 评论 -
LVGL8学习之Outline Styles
这一篇来学习一下Outline Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void lv_outline_style_test(){ static lv_style_t style; lv_style_init(&style); // 初始化样式 lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式圆角 lv_st原创 2021-08-25 18:23:53 · 578 阅读 · 0 评论 -
LVGL8学习之Border Styles
这一篇来学习一下Border Style的使用,还是通过codeblock来模拟代码的运行,代码如下:void border_style_test(){ static lv_style_t style; lv_style_init(&style); // 初始化样式 lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 10); // 设置样式圆角弧度 lv_styl原创 2021-08-25 18:05:35 · 1238 阅读 · 0 评论 -
LVGL8学习之Background Styles
这一篇学习一下Background Styles,代码如下:void background_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_reset(&style); // 重置样式 lv_style_set_radius(&style, 5); // 设置样式的圆角弧度 lv_style_set_bg_opa(&style, L原创 2021-08-25 17:46:46 · 2404 阅读 · 0 评论 -
LVGL8学习之Size styles
这一篇学习一下Size styles代码如下:void lv_size_style_test(){ static lv_style_t style; lv_style_init(&style); lv_style_reset(&style); // 重置按钮样式 lv_style_set_radius(&style, 5); // 设置样式圆角弧度 lv_style_set_width(&style, 150); //原创 2021-08-25 17:31:25 · 652 阅读 · 1 评论 -
LVGL8学习之slider
这一篇学习一下slider对象的使用可通过lv_slider_set_range设置滑块的变化范围可通过lv_slider_get_min_value获取滑块的最小值可通过lv_slider_get_max_value获取滑块的最大值代码如下:static void slider_event_callback(lv_event_t* event){ lv_obj_t * slider = lv_event_get_target(event); if (slider !原创 2021-08-25 17:05:38 · 748 阅读 · 1 评论 -
LVGL8学习之Button Styles
上一篇学习了Button,这一篇学习为按钮添加样式static void button_style_init(){ lv_style_init(&style_btn); // 初始化按钮样式 lv_style_reset(&style_btn); // 重置按钮样式 lv_style_set_radius(&style_btn, 10); // 设置按钮样式圆角弧度 lv_style_set_bg_opa(&style_btn, LV原创 2021-08-25 16:32:37 · 3985 阅读 · 1 评论 -
LVGL8学习之Button
最近看到lvgl更新到了v8版本,V8版本和之前的V7版本有了不少的变化,现在开始继续学习一下,今天主要学习Button的使用,还是通过codeblock来模拟代码的运行,下面上代码static void btn_event_callback(lv_event_t* event){ static uint32_t counter = 1; lv_obj_t* btn = lv_event_get_target(event); //获取事件对象 if (btn != NU原创 2021-08-25 15:15:25 · 2867 阅读 · 4 评论 -
codeblocks运行lvgl8
1、软件环境codeblocks20.03 下载地址:https://download.csdn.net/download/qq981378640/214955212、获取lvgl v8的codeblocks分支代码获取地址:https://github.com/lvgl/lv_sim_codeblocks_win由于目前国内的github访问比较慢,使用git clone这个分支的代码比较费时,所以这里直接下载了下载之后是一个ZIP包,里面的lvgl,lv_drivers和l..原创 2021-08-25 14:32:18 · 3786 阅读 · 9 评论 -
LVGL7.11中使用freetype库加载显示字体
1、使用环境2、关于freetype库3、编译freetype-2.10.4(1)解压freetype-2.10.4.原创 2021-04-26 20:42:50 · 7882 阅读 · 17 评论