LVGL8.1版本笔记

2023-05-16

之前学过LVGL6,现在版本更新到LVGL8了,学习下新版本,本文主要是记录一些LVGL8的新特性,区别和lvgl6的不同之处 。
lv_task_handler()的作用:
链接: lv_task_handler()是什么,lvgl到底在while(1)中做了什么
总结:lv_task_handler()中,调用lv_indev_read_task()来处理输入信息,当没有输入时,while(1)在做空循环,当有输入时,运行lv_hal_indev.c #149 _lv_indev_read(),调用之前注册的输入驱动回调函数,获取数据,然后调用lv_refr.c #177 _lv_disp_refr_task()来执行刷新操作,刷新时首先调用绘图函数,将内存填充好,之后刷新过程会调用之前注册到显示驱动的回调函数,将相应内容刷到对应显示驱动上,刷新结束,进行下一次的循环
————————————————
版权声明:本文为CSDN博主「hebao0」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46338291/article/details/121626741
属性:
设置对象的属性通过一个函数传入不同的参数来实现
lv_obj_add/clear_flag(obj,LV_OBJ_FLAG...)
FLAG分类:
LV_OBJ_FLAG_HIDDEN 隐藏对象。 (就像它根本不存在一样)
LV_OBJ_FLAG_CLICKABLE 使输入设备可点击对象
LV_OBJ_FLAG_CLICK_FOCUSABLE 单击时将焦点状态添加到对象
LV_OBJ_FLAG_CHECKABLE 对象被点击时切换选中状态
LV_OBJ_FLAG_SCROLLABLE 使对象可滚动
LV_OBJ_FLAG_SCROLL_ELASTIC 允许在内部滚动但速度较慢
LV_OBJ_FLAG_SCROLL_MOMENTUM 在“抛出”时使对象滚动得更远
LV_OBJ_FLAG_SCROLL_ONE 只允许滚动一个可捕捉的孩子
LV_OBJ_FLAG_SCROLL_CHAIN 允许将滚动传播到父级
LV_OBJ_FLAG_SCROLL_ON_FOCUS 自动滚动对象以使其在聚焦时可见
LV_OBJ_FLAG_SNAPPABLE 如果在父对象上启用了滚动捕捉,它可以捕捉到这个对象
LV_OBJ_FLAG_PRESS_LOCK 保持对象被按下,即使按下从对象上滑动
LV_OBJ_FLAG_EVENT_BUBBLE 也将事件传播给父级
LV_OBJ_FLAG_GESTURE_BUBBLE 将手势传播给父级
LV_OBJ_FLAG_ADV_HITTEST 允许执行更准确的命中(点击)测试。例如。考虑圆角。
LV_OBJ_FLAG_IGNORE_LAYOUT 使对象可以通过布局定位
LV_OBJ_FLAG_FLOATING 父滚动时不滚动对象,忽略布局
LV_OBJ_FLAG_LAYOUT_1 自定义标志,可供布局免费使用
LV_OBJ_FLAG_LAYOUT_2 自定义标志,可供布局免费使用
LV_OBJ_FLAG_WIDGET_1 自定义标志,小部件免费使用
LV_OBJ_FLAG_WIDGET_2 自定义标志,小部件免费使用
LV_OBJ_FLAG_USER_1 自定义标志,用户免费使用
LV_OBJ_FLAG_USER_2 自定义标志,用户免费使用
LV_OBJ_FLAG_USER_3 自定义标志,用户免费使用
LV_OBJ_FLAG_USER_4 自定义标志,由用户部分免费使用。
示例:
lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN);//隐藏对象
lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICKABLE);//设置对象不可点击

样式style
lvgl8的样式更加的方便,分为普通样式和本地样式,
普通样式和之前的一样,都要先定义在设置,
本地样式不用,直接对obj的默认样式进行更改,
样式创建出来通过lv_style_init(&style);初始化
样式的设置都是同个函数实现的,不同于之前的结构体赋值
例如:lv_style_set_XXX(&style,value);
本地样式函数:lv_obj_set_style_xxx(obj,value,select);
给目标设置样式函数:lv_obj_add_style(obj,&style,selector);
para_3是obj的状态例如默认是0,就是默认状态,也称为部分(path)
LV_STATE_PRESSED是按下时的状态,就是obj按下时的样式设置
新增了样式过渡,
lvgl8的样式改变的还是很大的,而且更加方便了,尤其是本地样式,直接改变空间的默认样式,不需要占用额外的空间保存样式了。

图片按钮
lvgl8的图片按钮好像只能是设置三种图片源的那种创建,只有一种的我没找到他的函数
通过样式过渡,用一张图片就简单实现的之前的图片按钮的按下情景

添加事件

lv_obj_add_event_cb(obj, my_event_cb_1, LV_EVENT_CLICKED, user_para);
lv_obj_add_event_cb(obj, my_event_cb_2, LV_EVENT_PRESSED, NULL);
lv_obj_add_event_cb(obj, my_event_cb_3, LV_EVENT_ALL, NULL);
lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num1);
lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num2);

事件的回调函数参数只有event一个了,但是可以再内部调用函数判断obj
static void imgbtn_first_cb(lv_event_t* event)参数不是指针类型会有warning
可以在事件回调函数中获取发生事件的obj = lv_event_get_target(event);
lv_event_t 是传递给事件回调的唯一参数,它包含有关事件的所有数据。可以从中获得以下值:
lv_event_get_code(e) 获取触发的事件代码
lv_event_get_target(e) 获取事件发送到(关联)的对象
lv_event_get_original_target(e) 获取事件最初发送到的对象(与 lv_event_get_target 不同,如果 event bubbling 被启用)
lv_event_get_user_data(e) 获取作为lv_obj_add_event_cb的最后一个参数传递的指针。
lv_event_get_param(e) 获取作为lv_event_send的最后一个参数传递的参数
添加事件不能用与操作,要另外写一次函数

删除了lv_cont控件,好像是用lv_obj_create();代替创建一个矩形对象

lbgl8可以直接显示数字,lv_label_set_text_fmt(label,"%d",100);
之前的版本不知道有没有这个函数,这样就可以直接用结构体数据了
lv_label_set_text_fmt(lab, "Item %d", i);类似printf()函数,可以用这个同时显示字符和数字
%s,%d,%f等等都可以用lv_label_set_text_fmt(label1,"%s\r\n%d\n","hello",520);这样字符串和数字就都可以直接显示了,

之前用lv_list做菜单,lvgl8他有lv_menu控件,可以直接生成menu,好像8.2版本才有。

menu控件是8.2版本才有的,目前使用的是8.1版本,所以要移植过来
但是移植过来轴有warning,虽然功能可以实现,但是对于微型强迫症的我的来说不好
https://blog.csdn.net/mygod2008ok/article/details/123470145
这个是8.2版本在vs2022上的仿真环境搭建,以后有机会的搞一下,

demo.h头文件中包含了lv_menu.h就没有warning

menu的初始页面返回键通过lv_menu_set_mode_root_back_btn(menu,flag)设置
LV_MENU_ROOT_BACK_BTN_DISABLED
LV_MENU_ROOT_BACK_BTN_ENABLED
常用的API
lv_menu_page_create(menu, title)创建新的空菜单页,可以添加任意小控件
lv_menu_set_page(menu, page)设置菜单的主界面
lv_menu_set_sidebar_page(menu, page)设置侧边栏
lv_menu_set_load_page_event(menu, obj, new page).连接两个页面
lv_menu_cont_create(parent page) 创建新的容器
lv_menu_section_create(parent page) 创建新的空区域
lv_menu_separator_create(parent page) 创建分隔符
lv_menu_set_mode_header(lv_obj_t *obj, lv_menu_mode_header_t mode_header)设置标题的状态
lv_menu_set_load_page_event(lv_obj_t *menu, lv_obj_t *obj, lv_obj_t *page)将菜单添加到菜单项

当主栏或侧边栏的返回btn按下时发送LV_EVENT_CLICKED
主界面的返回按钮通过添加事件的方式设置操作
例如:lv_obj_add_event_cb(menu,back_event_handler,LV_EVENT_CLICKED,menu);

menu的子菜单必须在上一级菜单前面进行初始化设置

mbox消息对话框更加方便了
lv_msgbox_create(Parent, "title", "text", btns, close_btn_en);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVGL8.1版本笔记 的相关文章

  • ROS学习笔记(三):rosrun和runlaunch的用法

    一 区别 rosrun是运行一个单独节点的命令 xff0c 如果要运行多个节点 xff0c 则需要使用多次rosrun命令 roslaunch采用XML的格式对需要运行的节点进行描述 xff0c 可以同时运行多个节点 例如 xff1a lt
  • Javascript>> onmouseover用法

    lt DOCTYPE html gt lt html gt lt head gt lt title gt Window Title lt title gt lt head gt lt body gt lt p gt Test your mo
  • Python之Flask登录认证--before_request

    from flask import Flask render template request Response redirect session url for app 61 Flask name app debug 61 True 自动
  • Prometheus安装部署和node_exporter的使用

    一 环境 服务器IP系统组件192 168 0 181CentOS7 6Prometheus Server 2 18 1192 168 0 182CentOS7 6node exporter 1 0 0 下载地址为 xff1a https
  • easyui 学习总结

    1 分页折行导致显示问题 问题描述 xff1a 1 缩小datagrid的宽度 xff0c 直至分页刚刚折行 2 此时再隐藏pageList按钮和刷新按钮 此时table底部将出现一个白条 39 dg 39 datagrid data ge
  • 机会从来都是留给有准备的人,当然,也总是留给那些耐得住寂寞的人, 在别人玩的时候,静下心来学习

    席华锋 1985年出生 2004年上大学 华中科技大学 2011研究生毕业 工作蚂蚁金服 搞Ocean Base分布式数据库 八年如一日 实现从P5到P8的职业生涯三级跳 xff0c 也完成了三个阶段的成长和蜕变 https blog cs
  • JetsonTX2上安装tensorflow的心酸史

    JetsonTX2上安装tensorflow的心酸史 还是那句话 xff0c 做事情得有耐心 xff0c 有耐心 耐心 心 感觉像是给自己的一个心理暗示 tensorflow安装常见问题总结验证 tensorflow1 3 0安装 好的 x
  • MOS管开关电路应用及MOS管原理、选型

    目录 硬件基础 MOS管原理 使用 开关电路应用0 写在前面 xff1a 1 MOS管基本原理及分类1 1 MOS管分类1 2 MOS管导通原理1 3 MOS管输出特性曲线1 4 MOS管的转移特性1 5 MOS管的寄生二极管 xff1a
  • MQTT服务器搭建和ESP32实现MQTT代码

    文章目录 1 MQTT介绍 xff1a 1 1 需求介绍1 2 MQTT介绍 xff1a 2 具体实现 xff1a 2 1 库推荐2 2 配置MQTT的服务器Broker xff1a 2 3 PubSubClient库使用 xff1a 3
  • 三极管从入门到精通

    文章目录 摘要1 基础1 1 PN结1 2 三极管 2 三极管模拟电路知识2 1 I V特性曲线2 2 极限参数解释2 3 基本共射极放大电路2 4 小信号模型2 5 用小信号模型分析基本共射极放大电路 3 三极管实际模拟电路应用图3 1
  • Type-C接口简单介绍-面向单片机应用

    Type C接口简单介绍 面向单片机应用 1 绪论 用单片机做一些东西时 xff0c Type C接口逐渐替代了MicroUSB接口 但不像MicroUSB那样只有5V GND D 43 D ID五个接口 xff0c Type C接口有24
  • 嵌入式硬件:放大器电路仿真

    文章目录 说明同向放大电路反向放大电路放大器滤波电路低通滤波电路proteus仿真TINA TI仿真 窄带滤波电路preteus仿真TINA TI仿真 参考 说明 书上的放大电路图很多都是理论图 xff0c 和实际应用有所差异 比如下面这个
  • git 切换分支

    1 查看所有分支 git branch a 2 查看当前分支 号表示当前分支 git branch 3 切换分支 git checkout 39 分支名 39 4 修改代码仓库 git remote set url origin 39 仓库
  • 嵌入式安卓开发:使用Camera2获取相机

    文章目录 Camera2介绍Camera2的主要API类介绍CameraManager通过CameraManage获取Cameracharacteristics通过CameraManage获取CameraDevice从CameraDevic
  • ESP32的VSPI和HSPI

    说明 SPI共有4根线 xff0c MOSI MISO CS CLK xff0c 在ESP32中对应规则如下表 xff1a ESP32共有4个SPI xff0c 但是用户能够使用的只有2个SPI xff0c 分为VSPI和HSPI 引脚接口
  • Android Studio添加EasyPemissions

    问题描述 按照EasyPermissions主页描述的那样添加完依赖后 xff0c 在程序中使用还是报错 xff1a Failed to resolve pub devrel easypermissions 0 3 0 解决方法 首先 xf
  • ROS:话题编程 订阅者Subscriber的简单实现

    1 xff08 1 xff09 编写一个C 43 43 话题订阅者 该例程将订阅 turtle1 pose话题 xff0c 消息类型turtlesim Pose include lt ros ros h gt include 34 turt
  • 浅谈操作系统-启动过程

    前言 时光匆碌 xff0c 不知不觉都大三了 xff0c 在众多的专业课的学习中也算是找到了一些乐趣 xff0c 纸上得来终觉浅 xff0c 所以决定完整的回顾一下整个操作系统的知识 xff0c 为了理论与实践相结合 xff0c 以学校实验
  • 串口调试常见问题和排查方法

    串口UART作为嵌入式应用和通讯领域中最常用的接口之一 xff0c 接口协议虽然简单 xff0c 但在实际应用中不同设备之间的通讯也会存在各种小问题 xff0c 下面对使用中各种常见的问题做下总结和梳理 xff0c 可作为调试参考 串口可分
  • 3 POSIX 多任务及同步机制-拓展实验 条件变量与生产者-消费者问题

    3 POSIX 多任务及同步机制 拓展实验 条件变量与生产者 消费者问题 一 xff0e 实验目的 理解进程 线程同步问题 掌握POSIX条件变量机制的使用方法 深入理解在动态并发环境下 xff0c 进程 线程在运行过程中的资源竞争应发的问

随机推荐

  • 深度优先搜索DFS和广度优先搜索BFS

    相关博客链接 xff1a https www cnblogs com rjgcs p 5198467 html https blog csdn net xiaobo Clanguage article details 88085074 ht
  • 埋头努力之前得先看清方向

    埋头努力之前得先看清方向 写在工作半年 xff0c 第一次拿到绩效结果后 工作和学生时代最大的不同在于 xff0c 工作之后很多事情是消耗型的 xff0c 领导和组织看重的是输出 xff0c 而个人的成长和提升需要自己全权负责 这两者之间是
  • 周末写点轻松的吧

    一直觉得 有一段跟自己独处的时光是很幸福的事情 难得的双休日 xff0c 中午太阳很好 xff0c 照在绿萝上 xff0c 嫩嫩绿绿的叶子很漂亮 前几周去花市买了盆栀子花 xff0c 整整一大盆 xff0c 上面布满了花苞 以前见过开了花的
  • 为什么大部分的C/C++码农都成不了高级工程师?真实原因是缺少核心能力!

    一般来说技术团队的金字塔顶尖往往是技术最牛的人做底层架构师 xff08 或高级工程师 xff09 所以底层架构师在广大码农中的占比大概平均不到 20 然而80 码农干上许多年都是重复以下内容 xff0c 所以做不了架构师 xff0c 正在辛
  • kaggle邮箱不能验证+安装python的Speedml库

    注册kaggle账号遇到一些问题 下面是具体问题和解决方案 希望遇到同样问题的小伙伴不要再踩到坑啦 1kaggle邮箱不能验证You did not enter the correct captcha response Please try
  • 用程序验证生日“悖论”

    生日 悖论 其实并不是悖论 xff0c 它是说在一个人数超过23人的集体中 xff0c 至少有两个人生日在同一天的概率约为0 5 因为这个理论上的概率与人们的直觉不符 xff0c 才会被称为 悖论 我们可以用一个简单的小程序验证它哦 xff
  • python 中 defaultdict 的用法

    场景 xff1a 统计一个字符串列表中每个字符串的频数 一个明显的方法是建立一个键是字符串 xff0c 值是频数的字典 方法1 xff1a word count 61 for word in document if word in word
  • K近邻算法所面临的维数灾难问题

    K近邻算法的基本思想 K近邻算法是一种常用的监督学习方法 xff0c 其原理非常简单 xff1a 给定测试样本 xff0c 基于某种距离找出训练集中与其最靠近的K个训练样本 xff0c 然后基于这K个邻居的信息来进行预测 两个基本要素 xf
  • Android广播发送机制剖析【android广播系列二】

    上篇博客大致说了说广播的注册机制 xff0c 动态注册和静态注册广播的原理还不一样 xff0c 动态广播最后HashMap中了 xff0c 最后放到mReceiverResolver中 xff0c 以后当ActivityManagerSer
  • 观察者模式--Java设计模式

    观察者模式定义 xff1a 定义了对象之间的一对多的依赖 xff0c 这样一来 xff0c 当一个对象发生改变状态的时候 xff0c 它的所有依赖者都会收到通知并自动更新 参考如下图 xff1a 观察者设计模式也叫发布 订阅模式 也可以称作
  • Android——RuntimePermission介绍

    1 介绍 androidM版本上 xff0c 对permission的管理做了部分改动 xff0c 针对dangerous permission xff0c 不在安装的时候给予权限 xff0c 而是在运行过程中咨询用户是否给予app响应的权
  • Android中launcherMode="singleTask"详解【android源码解析六】

    android中launcherMode有4中属性 xff1a standard 默认 xff0c singleTop xff0c singleTask和 singleInstance xff1b 网上有好多例子讲解这四种关系的 xff1a
  • Android闹钟最终版【android源码闹钟解析】

    我以前写了个复杂闹钟的demo xff0c 参见 Android闹钟 复杂版 大明进化十五 但是里面的bug有一些 xff0c 好多人留言 xff0c 所以我就看看源码 xff0c 找找原因 xff1f 顺便把源码代码整理出来 xff0c
  • Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】

    最近一周在研究rom移植 xff0c 所以就对Smali语言学习了一下 xff0c Smali语言其实就是Davlik的寄存器语言 xff1b Smali语言就是android的应用程序 apk通过apktool反编译出来的都有一个smal
  • 程序员平均月薪过万,想当程序员的话,大学学那些专业会更好呢?

    在互联网时代 xff0c 程序员成为炙手可热的职业 虽然加班累成狗 xff0c 也有可能面临英年早秃的局面 xff0c 但是不得不说程序员的工资高于很多很多传统行业职位的工资 据统计 xff0c 应届程序员毕业生在一线城市平均月薪达到8k
  • android4.0自定义锁屏总结【android锁屏研究一】

    最近搬家了 xff0c 从北京 gt 深圳 xff0c 除了天气有点不同外 xff0c 其他的都差不多 xff0c 工作性质和以前也类似 xff01 纪念一下自己的迁移 题外话 转载请表明出处 xff1a http blog csdn ne
  • android系统锁屏详解【android锁屏解析二】

    谷歌的代码写的确实不错 xff0c 我很幸运 xff0c 一开始接触代码就赶上了谷歌这个开源的系统 xff0c 让我的视野开阔了很多 xff0c 也让我看到了优秀的代码工程师写到的代码 心怀感恩之心 题记 我的有篇文章说了这个锁屏 xff0
  • 单片机学习笔记8--按键和外部中断(基于百问网STM32F103系列教程)

    第八章 按键和外部中断 第一节 按键原理 GPIO内部上拉较弱 xff0c 可根据满足电路需求选择是用内部的上拉还是自己外接上拉 根据原理图可知 xff0c 当按键松开时 xff0c 单片机引脚连接在高电平上 xff0c GPIO口输入高电
  • ARM架构与编程6--重定位(基于百问网ARM架构与编程教程视频)

    一 启动程序流程 我们之前讲过 xff0c 单片机有根据boot的不同 xff0c 有三种启动方式 xff1a boot0boot1启动模式0Xflash启动10系统存储器11内置SRAM 单片机上电复位后 xff0c 运行main函数 以
  • LVGL8.1版本笔记

    之前学过LVGL6 xff0c 现在版本更新到LVGL8了 xff0c 学习下新版本 xff0c 本文主要是记录一些LVGL8的新特性 xff0c 区别和lvgl6的不同之处 lv task handler 的作用 链接 lv task h