当前位置: 首页 > news >正文

【瑞昱RTL8763E】刷屏

1 显示界面填充

用户创建的各个界面在 rtk_gui group 中。各界面中 icon[]表对界面进行描述,表中的每个元素代表一 个显示元素,可以是背景、小图标、字符等,UI_WidgetTypeDef 结构体含义如下:

typedef struct _UI_WidgetTypeDef

{

    int16_t x;                              //起始显示位置横坐标

    int16_t y;                              //起始显示位置纵坐标

    int16_t active_ys;                       //有效滑动区域纵向起始位置

    int16_t active_ye;                       //有效滑动区域纵向结束位置

    int16_t width;                          //图片宽度

    int16_t hight;                          //图片高度

    uint32_t addr;                          //图片在flash中地址

    uint16_t widget_id_type;                //图标类型(背景、普通图标、遮挡图标、表盘指针、字符等)

    union

   {

        UI_ClockPointerTypeDef clock_pointer;

        UI_StringRecordTypeDef string_mem;

        uint32_t mask_addr;

        uint32_t graph_color;

        uint32_t num_string_addr;

    } u;

    bool touch_capability;                  //是否支持点触菜单切换

    void (*widget_touch_func)(uint32_t button_touch_type);              //点触菜单切换回调函数

} UI_WidgetTypeDef;

 

typedef struct _UI_StringRecordTypeDef

{

    uint16_t single_font_height;     //字体高度

    uint16_t font_number;         //将要显示字符串中第几个字符

    uint16_t font_count;           //字符个数

    uint32_t font_color;           //字符颜色

} UI_StringRecordTypeDef;

 

2 回调函数实现功能

/* change Here for UI */

const UI_MenuTypeDef Player =

{

    /* change Here for UI */

    .name = (const char *)"Player",

    .MenuParent = NULL,

    .MenuSub = NULL,

    .button_func = menu_button_cb,

    .touch_func = menu_touch_cb,

    .update_func = menu_update_cb,

    .dynamic_cb = menu_dynamic_time_cb,

    .display_cb = menu_display_time_cb,

    .cur_display_info = menu_display_info_cb,

    .constructor_cb = menu_constructor_cb,

    .destructor_cb = menu_destructor_cb,

    .pWidgetList = (UI_WidgetTypeDef *)icon,

    .current_max_widget = sizeof(icon) / sizeof(UI_WidgetTypeDef),

};

menu_touch_cb 触摸屏回调函数,包括基本的触摸滑动类型。

触摸滑动类型

含义解释

TOUCH_HOLD

横向跟指拖动

TOUCH_HOLD_Y

纵向跟指拖动

TOUCH_ORIGIN_FROM_X

横向回弹

TOUCH_ORIGIN_FROM_Y

纵向回弹

TOUCH_RIGHT_SLIDE

向右快速滑动

TOUCH_LEFT_SLIDE

向左快速滑动

TOUCH_UP_SLIDE

向上快速滑动

TOUCH_DOWN_SLIDE

向下快速滑动

TOUCH_INVALIDE

无效滑动

 在此回调函数中可以实现菜单之间相互切换的逻辑关系。利用rtl_gui_menu_update()rtl_gui_menu_slide()接口表明菜单之间的切换关系,接口详细说明参考下一节。

menu_constructor_cb构建当前菜单:

menu_ destructor _cb销毁当前菜单: 

menu_display_info_cb更新菜单图标内容数组,例如时间菜单每次刷屏时所显示的时间不同,这时此回调回来更新所要显示的时间。

menu_dynamic_time_cb界面定时刷新回调。

menu_update_cb界面刷新回调。

3 关键接口

实际刷屏接口:

void rtl_gui_menu_update(UI_MenuTypeDef *ui_cur, void *p_ui_cur_argv, \

                      UI_MenuTypeDef *ui_sub, void *p_ui_sub_argv, \

                      UI_MenuTypeDef *ui_par, void *p_ui_par_argv, \

                      int16_t detal_x, int16_t detal_y)

  • ui_cur,当前菜单,p_ui_cur_argv对应菜单内容更新;
  • ui_sub,下滑/右滑菜单,p_ui_sub_argv对应菜单内容更新;
  • ui_par,上滑/左滑菜单p_ui_par_argv对应菜单内容更新
  • detal_x,滑动造成的横向偏移;
  • detal_y,滑动造成的纵向偏移;

 记录各个菜单详情以及滑动位置及距离:

void rtl_gui_menu_slide(UI_MenuTypeDef *ui_cur, void *p_ui_cur_argv, \

                    UI_MenuTypeDef *ui_sub, void *p_ui_sub_argv, \

                    UI_MenuTypeDef *ui_par, void *p_ui_par_argv, \

                    int16_t from_x, int16_t to_x, \

                    int16_t from_y, int16_t to_y) 

  • ui_cur,当前菜单,p_ui_cur_argv对应菜单内容更新;
  • ui_sub,下滑/右滑菜单,p_ui_sub_argv对应菜单内容更新;
  • ui_par,上滑/左滑菜单p_ui_par_argv对应菜单内容更新
  • from_x,横向起始滑动位置;
  • to_x,横向目标位置;
  • from_y,纵向起始滑动位置;
  • to_y,纵向目标位置;
http://www.lryc.cn/news/455208.html

相关文章:

  • 【黑马点评】使用RabbitMQ实现消息队列——3.使用Jmeter压力测试,导入批量token,测试异步秒杀下单
  • 第 21 章 一条记录的多幅面孔——事务的隔离级别与 MVCC
  • javaScript操作dom的事件(3个案例+代码+效果图)
  • 国庆期间的问题,如何在老家访问杭州办公室的网络呢
  • 动态规划算法——三步问题
  • 【鸿蒙学习】深入解析鸿蒙应用与元服务:含义、区别、应用场景及创建方法
  • React学习01 jsx、组件与组件的三大属性
  • 项目——超级马里奥——Day(3)
  • 测试-BUG篇
  • vue2中 vue-count-to组件让数字从某个数字动态的显示到某个数字(后附vue3的用法)
  • AI模型部署初认识
  • 在线生成论文的网站有哪些?分享5款AI一键原创论文免费网站
  • 考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
  • Pandas 时间序列处理
  • PCL 1.8.1 + VTK 1.8.0 + QT5.14.2+ VS2017 环境搭建
  • 微信小程序和抖音小程序的分享和广告接入代码
  • 中断系统的原理
  • 安装Rust
  • vite学习教程05、vite+vue2构建本地 SVG 图标
  • 机器学习——自监督学习与无监督学习
  • 2003经典绝版100%仿盛大服务端火炬引擎原版
  • 银河麒麟服务器:更新软件源
  • 字节跳动收购Oladance耳机:强化音频技术,加速VR/AR生态布局
  • Android SystemUI组件(11)SystemUIVisibility解读
  • JSON 全知全解:深入探索 JSON 的奥秘
  • CSS | 响应式布局之媒体查询(media-query)详解
  • 并查集的模拟实现
  • 如何高效删除 MySQL 日志表中的历史数据?实战指南
  • 请散户股民看过来,密切关注两件大事
  • 设计模式之外观模式(Facade)