想做输入法界面?安排,LVGL『keyboard键盘控件』介绍
一. LVGL GUI键盘控件的概念
Keyboard 对象是一个特殊的 Button 矩阵,具有预定义的按键映射和其他功能,以实现虚拟键盘来编写文本。
二. LVGL GUI键盘小部件和样式
类似于按钮 矩阵,键盘包括 2 部分:
- LV_KEYBOARD_PART_BG 这是主要部分,并使用了所有典型的背景属性
- LV_KEYBOARD_PART_BTN 这是按钮的虚拟部分。它还使用所有典型的背景属性和文本属性。
三. LVGL GUI键盘控件的使用
1. 模式(Modes)
键盘有如下模式:
LV_KEYBOARD_MODE_TEXT_LOWER - Display lower case letters
LV_KEYBOARD_MODE_TEXT_UPPER - Display upper case letters
LV_KEYBOARD_MODE_TEXT_SPECIAL - Display special characters
LV_KEYBOARD_MODE_NUM - Display numbers, +/- sign, and decimal dot.
我们来看下每个的差别!
代码如下:
void lvgl_keyboard_mode_test(void)
{lv_obj_t* keyboard1 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard1,600,140);lv_obj_set_pos(keyboard1,0,0);lv_keyboard_set_mode(keyboard1, LV_KEYBOARD_MODE_TEXT_LOWER);lv_obj_t* keyboard2 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard2, 600, 140);lv_obj_set_pos(keyboard2, 0, 150);lv_keyboard_set_mode(keyboard2, LV_KEYBOARD_MODE_TEXT_UPPER);lv_obj_t* keyboard3 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard3, 600, 140);lv_obj_set_pos(keyboard3, 0, 300);lv_keyboard_set_mode(keyboard3, LV_KEYBOARD_MODE_SPECIAL);lv_obj_t* keyboard4 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard4, 600, 140);lv_obj_set_pos(keyboard4, 0, 450);lv_keyboard_set_mode(keyboard4, LV_KEYBOARD_MODE_NUM);
}
2. 分配文本区域(Assign Text area)
用这个函数分配文本区域lv_keyboard_set_textarea(kb, ta)
3. 新按键图(New Keymap)
您可以使用和为键盘指定新的地图(布局)。了解有关 Button 矩阵对象的更多信息。请记住,使用以下关键字将具有与原始地图相同的效果:
lv_keyboard_set_map(kb, map)lv_keyboard_set_ctrl_map(kb, ctrl_map)
- LV_SYMBOL_OK-申请。
- LV_SYMBOL_CLOSE-关闭。
- LV_SYMBOL_BACKSPACE-左侧删除。
- LV_SYMBOL_LEFT-向左移动光标。
- LV_SYMBOL_RIGHT-向右移动光标。
- "ABC" -加载大写地图。
- "abc" -加载小写字母映射。
- "输入" -新行。
4. 事件(Event)
- LV_EVENT_VALUE_CHANGED-按下/释放按钮时或在长按后重复时发送。事件数据设置为按下/释放按钮的 ID。
- LV_EVENT_APPLY -确定按钮被点击。
- LV_EVENT_CANCEL -关闭按钮被点击。
我们来一个官方的综合例子:
static lv_obj_t* kb;
static lv_obj_t* ta;
static void kb_event_cb(lv_obj_t* keyboard, lv_event_t e)
{lv_keyboard_def_event_cb(kb, e);if (e == LV_EVENT_CANCEL) {lv_keyboard_set_textarea(kb, NULL);lv_obj_del(kb);kb = NULL;}
}static void kb_create(void)
{kb = lv_keyboard_create(lv_scr_act(), NULL);lv_keyboard_set_cursor_manage(kb, true);lv_obj_set_event_cb(kb, kb_event_cb);lv_keyboard_set_textarea(kb, ta);}static void ta_event_cb(lv_obj_t* ta_local, lv_event_t e)
{if (e == LV_EVENT_CLICKED && kb == NULL) {kb_create();}
}void lvgl_keyboard_test(void)
{/*Create a text area. The keyboard will write here*/ta = lv_textarea_create(lv_scr_act(), NULL);lv_obj_align(ta, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_DPI / 16);lv_obj_set_event_cb(ta, ta_event_cb);lv_textarea_set_text(ta, "");lv_coord_t max_h = LV_VER_RES / 2 - LV_DPI / 8;if (lv_obj_get_height(ta) > max_h) lv_obj_set_height(ta, max_h);kb_create();
}
好了,完结了,更多精彩继续戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
想做输入法界面?安排,LVGL『keyboard键盘控件』介绍相关推荐
- 制作一个GUI仪表盘,安排!LVGL『Gauge仪表盘控件』介绍
一. LVGL GUI仪表盘控件的概念 仪表盘是一种带有刻度标签和一根或多根针的仪表.比如车速/车转速等 二. LVGL GUI仪表盘小部件和样式 量规的主要部分称为 LV_GAUGE_PART_MA ...
- GUI怎么能缺少列表, LVGL『List列表控件』介绍
一. LVGL GUI列表控件的概念 列表是从背景页面和其上的按钮构建的.按钮包含一个可选的类似图标的图像(也可以是一个符号)和一个 Label.当列表足够长时,可以滚动它. 二. LVGL GUI列 ...
- 肝一个嵌入式日历吧!LVGL『Calendar日历控件』介绍
一. LVGL GUI日历控件的概念 LVGL做的日历空间还是比较好看的,而且需要我们做的事情很少,LVGL的日历控件有以下功能 突出显示当天 突出显示任何用户定义的日期 显示日期名称 单击按钮进入下 ...
- 嵌入式GUI LVGL『Tableview选项卡控件』介绍
一. LVGL GUI开关控件的概念 选项卡视图对象可用于组织选项卡中的内容. 二. LVGL GUI开关小部件和样式 Tab 视图对象包含几个部分.主要是 LV_TABVIEW_PART_BG .它 ...
- LVGL『Canvas画布控件』介绍
一. LVGL GUI画布控件的概念 画布继承自图像,用户可以在其中绘制任何内容.可以使用 lvgl 的绘图引擎在此处绘制矩形,文本,图像,圆弧.除了一些"效果",还可以应用,例如 ...
- 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍
一. LVGL GUI对象蒙版控件的概念 绘制其子级时,对象蒙版能够向图形添加一些蒙版 二. LVGL GUI对象蒙版小部件和样式 对象蒙版只有一个主要部分 LV_OBJMASK_PART_BG ,它 ...
- 嵌入式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 只有一个主要部分,称 ...
最新文章
- sqlalchemy 对 mysql 进行增删改查
- Oracle database datafile header中记录的datafile的大小
- BERT论文阅读(一): Pre-training of Deep Bidirectional Transformers for Language Understanding
- ajax文件上传报400,js ajaxfileupload.js上传报错的解决方法
- Java集合框架:总结
- 超越 YOLOv5 的目标检测开源项目又上新了
- 解决aapt命令在Linux下无法运行的问题
- LindDotNetCore~入门基础
- html5文本与段落简介,美化html段落文本 Ⅰ
- 西南大学计算机基础及数字电路907复习笔记
- 团队管理,领导的“无为”就是最大“有为”
- 8位处理器、16位处理器、32位处理器和64位处理器
- 【服务器数据恢复】IBM服务器RAID控制器出错的数据恢复案例
- 使用c语言实现后缀表达式计算器
- C++ 函数模板 实例化和具体化
- 电脑键盘按键都代表着什么意思?
- win10 1809无法更新(扩展EFI分区)
- 先掌握这 19 个 css 技巧,解决一些疑难杂症
- [深入研究4G/5G/6G专题-45]: 5G Link Adaption链路自适应-1-总体架构
- 嵌入式Linux驱动笔记(二十四)------framebuffer之使用spi-tft屏幕(上)