合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)

键盘 (Keyboard)

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)_第1张图片


LVGL 可以添加触摸键盘,但是很明显,使用触摸键盘的话必须要使用触摸的输入方式,否则无法驱动键盘。

示例代码

function keyCb(obj, e)
    -- 默认处理事件
    lvgl.keyboard_def_event_cb(keyBoard, e)
    if(e == lvgl.EVENT_CANCEL)then
        lvgl.keyboard_set_textarea(keyBoard, nil)
        --删除 KeyBoard
        lvgl.obj_del(keyBoard)
        keyBoard = nil
    end
end

function textAreaCb(obj, e)
    if (e == lvgl.EVENT_CLICKED) and not keyBoard then
        --创建一个 KeyBoard
        keyBoard = lvgl.keyboard_create(lvgl.scr_act(), nil)
        --设置 KeyBoard 的光标是否显示
        lvgl.keyboard_set_cursor_manage(keyBoard, true)
        --为 KeyBoard 设置一个文本区域
        lvgl.keyboard_set_textarea(keyBoard, textArea)
        lvgl.obj_set_event_cb(keyBoard, keyCb)
    end
end

textArea = lvgl.textarea_create(lvgl.scr_act(), nil)
lvgl.obj_set_size(textArea, 200, 40)
lvgl.textarea_set_text(textArea, "please input:")
lvgl.obj_align(textArea, DEMO_BASE_CONT, lvgl.ALIGN_CENTER, 0, -45)
lvgl.obj_set_event_cb(textArea, textAreaCb)

创建

通过 keyboard_create 可以创建键盘,实际上只要这一句就可在界面上显示键盘了。很难得的是,键盘没有复制对象,lvgl.keyboard_create 只需要传入一个参数就可以了。

keyBoard = lvgl.keyboard_create(lvgl.scr_act())

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)_第2张图片

模式

键盘支持几种模式, 分别是 大写,小写,数字符号
可以通过 lvgl.keyboard_set_mode 切换键盘的模式。

lvgl.KEYBOARD_MODE_TEXT_LOWER -- 小写模式 
lvgl.KEYBOARD_MODE_TEXT_UPPER -- 大写模式
lvgl.KEYBOARD_MODE_TEXT_SPECIAL -- 特殊符号模式(*)
lvgl.KEYBOARD_MODE_NUMBER -- 数字模式(*)

目前可以通过 API 设置的模式是大小写模式,其余模式需要在键盘上手动切换了,其中数字和符号在键盘上是一种布局,显示在一起的。我们来看下键盘的这几种模式:

小写

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)_第3张图片
大写

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)_第4张图片
数字符号

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)_第5张图片

事件

键盘当然是输入了,不过键盘的输入是针对于 文本框(Textarea) 控件的,要想演示键盘的一个输入效果,需要首先创建一个文本框,同时对文本框控件设置点击事件的回调函数。当文本框控件被点击的时候就会创建一个键盘,同时将键盘的输入绑定到文本框。当键盘点击确定或者取消时,就销毁键盘,在下次点击的时候重新创建。
键盘设置回调函数的方式如下,但是单独设置键盘回调函数是没有什么意义的,完整的代码可以参考上面的示例代码

function keyCb(obj, e)
    -- 默认处理事件
    lvgl.keyboard_def_event_cb(keyBoard, e)
    if(e == lvgl.EVENT_CANCEL)then
        lvgl.keyboard_set_textarea(keyBoard, nil)
        --删除 KeyBoard
        lvgl.obj_del(keyBoard)
        keyBoard = nil
    end
end

keyBoard = lvgl.keyboard_create(lvgl.scr_act(), nil)
lvgl.obj_set_event_cb(keyBoard, keyCb)

需要注意的是,在处理键盘事件的开始,首先要调用 lvgl.keyboard_def_event_cb 函数,来进行一些默认的事件处理。

API

lvgl.imgbtn_create

调用 lvgl.imgbtn_create(par)
功能 创建一个键盘对象
返回 指向创建键盘的指针
参数
par 指向对象的指针, 它将是键盘的父对象

lvgl.keyboard_set_textarea

调用 lvgl.keyboard_set_textarea(kb, ta)
功能 绑定文本框,键盘的输入会传到这里
参数
kb 指向创建键盘的指针
ta 需要绑定的文本框对象的指针。

lvgl.keyboard_set_mode

调用 lvgl.keyboard_set_mode(kb, mode)
功能 设置键盘的新模式
参数
kb 指向键盘对象的指针
mode 需要设置的键盘模式

lvgl.keyboard_set_cursor_manage

调用 lvgl.keyboard_set_cursor_manage(kb, en)
功能 设置键盘在激活文本框时是否显示光标
参数
kb 指向键盘对象的指针
en true 显示光标, false 不显示光标

lvgl.keyboard_get_textarea

调用 lvgl.keyboard_get_textarea(kb)
功能 获取键盘绑定的文本框
返回 键盘绑定的文本框
参数
kb 指向键盘对象的指针

lvgl.keyboard_get_mode

调用 lvgl.keyboard_get_mode(kb)
功能 获取键盘当前的模式
返回 键盘当前的模式
参数
kb 指向键盘对象的指针

lvgl.keyboard_get_cursor_manage

调用 lvgl.keyboard_get_cursor_manage(kb)
功能 获取键盘当前是否会激活光标
返回 true 会显示光标,false 不会显示光标
参数
kb 指向键盘对象的指针

lvgl.keyboard_def_event_cb

调用 lvgl.keyboard_def_event_cb(kb, e)
功能 默认处理键盘事件的程序。
参数
kb 指向键盘对象的指针
e 键盘接收到的事件

你可能感兴趣的:(AIR724软件,Air724UG)