GUI怎么能缺少列表, LVGL『List列表控件』介绍
一. LVGL GUI列表控件的概念
列表是从背景页面和其上的按钮构建的。按钮包含一个可选的类似图标的图像(也可以是一个符号)和一个 Label。当列表足够长时,可以滚动它。
二. LVGL GUI列表小部件和样式
列表与页面具有相同的部分
- LV_LIST_PART_BG
- LV_LIST_PART_SCRL
- LV_LIST_PART_SCRLBAR
- LV_LIST_PART_EDGE_FLASH
有关详细信息,请参见页面文档。
列表上的按钮被视为普通按钮,它们只有一个主要部分称为 LV_BTN_PART_MAIN 。
三. LVGL GUI列表控件的使用
1. 增加按键(Add buttons)
可以用这个函数来添加一个元素(按键)到列表中lv_list_add_btn(list, &icon_img, "Text")
其中第二个参数可以是图片,可以是符号,如果不想设置,可以设置为NULL!
void lvgl_list_add_button(void)
{lv_obj_t* list1 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list1, 160, 200);lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/lv_obj_t* list_btn;list_btn = lv_list_add_btn(list1, NULL, "Open");list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Close");list_btn = lv_list_add_btn(list1, NULL, "Edit");
}
2. 删除按键(Delete buttons)
用这个函数删除列表某一个索引的元素(按键)lv_list_remove(list, btn_index)
用这个函数清空列表lv_list_clean(list)
3. 手动导航(Manual navigation)
可以用这个函数lv_list_up(list) 选择上一个列表元素
可以用这个函数lv_list_down(list)选择列表下一个元素
用这个函数把某一个button获取焦点lv_list_focus(btn, LV_ANIM_ON/OFF)
我们写个代码实验下,通过button跟列表做一个小的组合例子(另外,感觉这个没用呢?是我写的有问题还是LVGL得bug?)
lv_obj_t* list_navig;
lv_obj_t* list_button;static void list_navig_up_event_handler(lv_obj_t* obj, lv_event_t event)
{if (event == LV_EVENT_CLICKED) {lv_list_up(list_navig);}
}static void list_navig_down_event_handler(lv_obj_t* obj, lv_event_t event)
{if (event == LV_EVENT_CLICKED) {lv_list_down(list_navig);}
}
void lvgl_list_navig_test(void)
{list_navig = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list_navig, 160, 200);lv_obj_align(list_navig, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/list_button = lv_list_add_btn(list_navig, NULL, "Open");list_button = lv_list_add_btn(list_navig, NULL, "Close");list_button = lv_list_add_btn(list_navig, NULL, "Edit");lv_list_focus(list_button, LV_ANIM_ON);lv_obj_t* bn_up = lv_btn_create(lv_scr_act(),NULL);lv_obj_t* bn_down = lv_btn_create(lv_scr_act(), NULL);lv_obj_set_style_local_value_str(bn_up, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "UP");lv_obj_set_style_local_value_str(bn_down, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "DOWND");lv_obj_align(bn_up, list_navig, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);lv_obj_align(bn_down, bn_up, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);lv_obj_set_event_cb(bn_up, list_navig_up_event_handler);lv_obj_set_event_cb(bn_down, list_navig_down_event_handler);
}
4. 布局(Layout)
默认列表是纵向的,但是可以设置为横向,用这个函数lv_list_set_layout(list, LV_LAYOUT_ROW_MID)
void lvgl_list_layout_test(void)
{lv_obj_t* list1 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list1, 160, 200);lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/lv_obj_t* list_button;list_button = lv_list_add_btn(list1, NULL, "Open");list_button = lv_list_add_btn(list1, NULL, "Close");list_button = lv_list_add_btn(list1, NULL, "Edit");lv_obj_t* list2 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list2, 160, 200);lv_obj_align(list2, list1, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);/*Add buttons to the list*/list_button = lv_list_add_btn(list2, NULL, "Open");list_button = lv_list_add_btn(list2, NULL, "Close");list_button = lv_list_add_btn(list2, NULL, "Edit");lv_list_set_layout(list2, LV_LAYOUT_ROW_MID);
}
5. 边界闪烁(Edge flash)
用这个函数开启边界闪烁lv_list_set_edge_flash(list, true)
6. 滚动传播(Scroll propagation)
用这个函数开启滚动传播lv_list_set_scroll_propagation(list, true)
7. 事件(Event)
static void list_event_handler(lv_obj_t* obj, lv_event_t event)
{if (event == LV_EVENT_CLICKED) {printf("Clicked: %s\n", lv_list_get_btn_text(obj));}
}void lvgl_list_test(void)
{/*Create a list*/lv_obj_t* list1 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list1, 160, 200);lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/lv_obj_t* list_btn;list_btn = lv_list_add_btn(list1, LV_SYMBOL_FILE, "New");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_DIRECTORY, "Open");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Delete");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_EDIT, "Edit");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_SAVE, "Save");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_BELL, "Notify");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_BATTERY_FULL, "Battery");lv_obj_set_event_cb(list_btn, list_event_handler);
}
好了,完结了,更多精彩继续戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
GUI怎么能缺少列表, LVGL『List列表控件』介绍相关推荐
- 制作一个GUI仪表盘,安排!LVGL『Gauge仪表盘控件』介绍
一. LVGL GUI仪表盘控件的概念 仪表盘是一种带有刻度标签和一根或多根针的仪表.比如车速/车转速等 二. LVGL GUI仪表盘小部件和样式 量规的主要部分称为 LV_GAUGE_PART_MA ...
- 嵌入式GUI LVGL『Tableview选项卡控件』介绍
一. LVGL GUI开关控件的概念 选项卡视图对象可用于组织选项卡中的内容. 二. LVGL GUI开关小部件和样式 Tab 视图对象包含几个部分.主要是 LV_TABVIEW_PART_BG .它 ...
- 肝一个嵌入式日历吧!LVGL『Calendar日历控件』介绍
一. LVGL GUI日历控件的概念 LVGL做的日历空间还是比较好看的,而且需要我们做的事情很少,LVGL的日历控件有以下功能 突出显示当天 突出显示任何用户定义的日期 显示日期名称 单击按钮进入下 ...
- 想做输入法界面?安排,LVGL『keyboard键盘控件』介绍
一. LVGL GUI键盘控件的概念 Keyboard 对象是一个特殊的 Button 矩阵,具有预定义的按键映射和其他功能,以实现虚拟键盘来编写文本. 二. LVGL GUI键盘小部件和样式 类似于 ...
- LVGL『Canvas画布控件』介绍
一. LVGL GUI画布控件的概念 画布继承自图像,用户可以在其中绘制任何内容.可以使用 lvgl 的绘图引擎在此处绘制矩形,文本,图像,圆弧.除了一些"效果",还可以应用,例如 ...
- 嵌入式GUI LVGL『Text Area文本区域控件』介绍
一. LVGL GUI文本区域控件的概念 文本区域是一个带有标签和光标的页面.文本或字符可以添加到它.长行被换行,当文本足够长时,可以滚动文本区域. 二. LVGL GUI文本区域小部件和样式 文本区 ...
- 嵌入式GUI LVGL『Tile View拼接视图控件』介绍
一. LVGL GUI拼接视图控件的概念 Tileview是一个容器对象,其中的元素(称为tiles)可以以网格形式排列.通过滑动,用户可以在这些贴图之间导航. 如果Tileview是屏幕大小,它会提 ...
- GUI一灯大师,LVGL『LED控件』介绍
一. LVGL GUI LED控件的概念 LED 是矩形(或圆形)的对象.它的亮度可以调节.亮度降低时,LED 的颜色会变暗. 二. LVGL GUI LED小部件和样式 LED 只有一个主要部分,称 ...
- 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍
一. LVGL GUI对象蒙版控件的概念 绘制其子级时,对象蒙版能够向图形添加一些蒙版 二. LVGL GUI对象蒙版小部件和样式 对象蒙版只有一个主要部分 LV_OBJMASK_PART_BG ,它 ...
最新文章
- NC:菌物组构建---随机性v.确定性、干旱胁迫、宿主筛选、统一动态(郭良栋、杨军点评)
- Android零基础入门第40节:自定义ArrayAdapter
- 025_Jedis集群
- lintcode-167-链表求和
- 蓝叠 正在检查服务器最新,Windows update一直停留在正在检查更新
- SpringMVC实现RESTful风格
- java使用nio读写文件
- php android 乱码,如何解决android php 中文乱码问题
- 二进制,八进制十进制十六进制之间数据转换
- UE4项目的命名规则
- myeclipse编写的html页面乱码问题
- tf data 常用操作
- Pyqt5 遇到的超级无敌大坑!clicked.connect后面的connect出现下划线 计算机积极拒绝问题
- Redis学习之hget命令
- scp构造端口_scp端口号(scp默认端口号)
- operate new、delete new和placement new
- 第六章 类与对象 类的包含
- SQL Server排序规则
- Win11如何更改字体样式?Win11更改字体样式的方法
- (二)【Matlab】Matlab矩阵处理
热门文章
- 在Word中为标题样式添加自动编号功能
- Python数据分析训练营——Python基础语法
- .net 程序访问数据库之异常SqlException (0x80131904)
- 跨国企业在中国 | 德国马夸特在华第二家工厂威海开业;格兰富水环境治理体验中心落户福州...
- 自立门诊-20220822
- 小米与美的的“初吻”是为了什么
- 探秘2022亚运会主场馆丨“大小莲花”智慧升级,带你见证科技力量
- vue 引入图片出现错误 Cannot find module ‘./XXX.jpg‘e
- Xiaomi Mi Notebook Air 13.3“ 2016黑苹果efi
- 4.13黄金多空博弈,白银TD最新操作