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


    键盘 (Keyboard)

    keyboard.png


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

    示例代码

    1. function keyCb(obj, e)
    2. -- 默认处理事件
    3. lvgl.keyboard_def_event_cb(keyBoard, e)
    4. if(e == lvgl.EVENT_CANCEL)then
    5. lvgl.keyboard_set_textarea(keyBoard, nil)
    6. --删除 KeyBoard
    7. lvgl.obj_del(keyBoard)
    8. keyBoard = nil
    9. end
    10. end
    11. function textAreaCb(obj, e)
    12. if (e == lvgl.EVENT_CLICKED) and not keyBoard then
    13. --创建一个 KeyBoard
    14. keyBoard = lvgl.keyboard_create(lvgl.scr_act(), nil)
    15. --设置 KeyBoard 的光标是否显示
    16. lvgl.keyboard_set_cursor_manage(keyBoard, true)
    17. --为 KeyBoard 设置一个文本区域
    18. lvgl.keyboard_set_textarea(keyBoard, textArea)
    19. lvgl.obj_set_event_cb(keyBoard, keyCb)
    20. end
    21. end
    22. textArea = lvgl.textarea_create(lvgl.scr_act(), nil)
    23. lvgl.obj_set_size(textArea, 200, 40)
    24. lvgl.textarea_set_text(textArea, "please input:")
    25. lvgl.obj_align(textArea, DEMO_BASE_CONT, lvgl.ALIGN_CENTER, 0, -45)
    26. lvgl.obj_set_event_cb(textArea, textAreaCb)

    创建

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

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

    键盘.bmp

    模式

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

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

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

    小写


    大写


    数字符号

    事件

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

    1. function keyCb(obj, e)
    2. -- 默认处理事件
    3. lvgl.keyboard_def_event_cb(keyBoard, e)
    4. if(e == lvgl.EVENT_CANCEL)then
    5. lvgl.keyboard_set_textarea(keyBoard, nil)
    6. --删除 KeyBoard
    7. lvgl.obj_del(keyBoard)
    8. keyBoard = nil
    9. end
    10. end
    11. keyBoard = lvgl.keyboard_create(lvgl.scr_act(), nil)
    12. 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指向键盘对象的指针
    entrue 显示光标, 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键盘接收到的事件
  • 相关阅读:
    「三」配置语法、配置文件高亮
    rknn-toolkit 国内源链接
    Java 序列化原理
    跟着官方学jni&ndk
    全网最全Python系列教程(非常详细)---字符串讲解(学Python入门必收藏)
    Flink学习11:flink程序并行度
    pycharm社区版不能使用conda
    elasticsearch访问9200端口 提示需要登陆
    墙布的使用窍门和保养清洁方法 - 江南爱窗帘十大品牌
    JS——【案例】图片轮播图(自动轮播/手动点击/悬停显示)[技术栈:html、css、JavaScript]
  • 原文地址:https://blog.csdn.net/l531798151/article/details/132656201