AWTK学习笔记

news2024/12/26 10:38:37

编译:scons
运行:.\bin\demo.exe
xml文件存放在工程的design\default\ui文件夹内
c文件存放在工程的src文件夹内
如果代码没有指定修改,默认按照AWTK Designer设置的控件属性动作运行
API函数查看使用说明:https://awtk.zlg.cn/api/awtk/

HelloDesigner-Demo 项目

window_open(“xx”); 打开xx界面
widget_on() 控件的事件处理函数
on_open_xx(xml文件名)_window(); 事件处理函数,将打开xx界面

主界面
中英互译按钮、LOGO图
widget_lookup // 查找指定名称的子控件(返回第一个)
widget_on // 注册指定事件的处理函数

basic界面
edit编辑器、静态文本
定时器
进度条(可以跟随定时器更新值、可以跟随滑动条更新值)
滑动条

timer_add() 定时器函数,第一个参数(其回调函数的值决定了定时器是否重复执行)

widget_t* target = WIDGET(evt->target);
widget_t* win = WIDGET(ctx);
widget_t* label = widget_lookup(win, “edit_label”, TRUE);
// 获取键盘输入的字符更新给edit_label文本控件
widget_set_text(label, target->text.str);

// 修改滑动条的值
value_set_int32(&v, widget_get_value(slider));
// 修改进度条的值
progress_bar_set_value(bar, value_int32(&v));

编辑框edit
在AWTK Designer的控件编辑器的杂项中的keyboard栏,可以绑定不同的键盘格式

Background Change 界面
窗体样式文件修改背景颜色

widget_use_style(win, “blue”);
这里的”blue”跟AWTK Designer的控件编辑器的窗体样式文件中的对应

List View 界面
将列表项的显示文本更新到静态文本控件
点击 Clone Self 列表项可在列表视图尾部添加一个列表项
点击 Remove Self 列表项可从列表视图中移除该列表项

移除控件
widget_remove_child(widget->parent, widget);
widget_destroy(widget);

tk_snprintf 函数
函数功能:
将可变参数(…)按照format格式化字符串,并将字符串复制到str中

Animate Widget 界面
AWTK Designer实现控件动画:平移、放大缩小、透明、旋转

其他功能
进入下一个界面、返回上一个界面

用的比较多的:AWTK Designer控件的名称要跟代码的一致、布局位置、字体大小、动画、进度条滑动条垂直放置

洁净新风系统

主界面:
鼠标放在“自动”控件上面,控件会变更图标,是由于在“自动”的控件编辑器->样式->state,切换normal、pressed、over,其icon会更改为其他图标
在这里插入图片描述

时钟为数字时钟
在这里插入图片描述

背景切换
bkgnd静态文本控件
通过打印调试查看背景切换
在这里插入图片描述

widget_lookup // 查找指定名称的子控件(返回第一个)
widget_on // 注册指定事件的处理函数

value_set_uint32 函数
函数功能:
设置类型为uint32的值

widget_get_prop 函数
函数功能:
获取控件指定属性的值

value_uint32 函数
函数功能:
获取类型为uint32的值

widget_use_style 函数
函数功能:
启用指定的style
在这里插入图片描述

widget_set_visible 函数
函数功能:
设置控件的可见性
例:widget_set_visible(timing, TRUE, FALSE); 设置定时器小图标为显示状态

widget_animator_set_yoyo 设置为yoyo模式。yoyo的次数,往返视为两次。
widget_animator_start 启动动画。
widget_animator_stop 停止动画
widget_animator_set_repeat 设置为重复模式。

wstr_to_int 函数
函数功能:
将字符串转成整数。

image_animation_play 播放图片动画
图片动画控件,指定一个图片前缀,依次显示指定序列的图片,从而形成动画效果。
图片序列可以用sequence指定,也可以用start_index和end_index指定一个范围。
可用通过style来设置控件的显示风格,如背景颜色和边框等等
在这里插入图片描述

定时器设置界面
时分秒的图怎么设置:AWTK Designer的选择器->文本选择器,然后根据其参数进行修改
在这里插入图片描述

设置时间函数:set_text_selector

text_selector_set_value 函数
函数功能:
设置text_selector的值

保存数据函数:save_text_selector

text_selector_get_value 函数
函数功能:
获取text_selector的值

widget_set_style_int函数
设置整数类型的style

widget_set_text 函数
函数功能:
设置控件的文本。(如果字符串相同,则不会重复设置以及触发事件)

idle_queue 函数
函数功能:
用于非GUI线程增加一个idle,本函数向主循环的事件队列中发送一个增加idle的请求。

Chart项目

表盘指针动画
在这里插入图片描述

修改参数运行后可以发现表盘指针变化
在这里插入图片描述

子控件存在异常问题
在这里插入图片描述

在左下角选择插件设置
在这里插入图片描述

然后勾选对应的插件,再点击窗口中间的“右箭头”将插件添加到项目中
在这里插入图片描述

饼图的角度与值参数理解
在这里插入图片描述

  1. 命名规范
    2.0 控件类型名
    控件类型名使用小写的英文单词,多个单词之间用下划线连接。
    2.1 类名
    控件类型名 + “_t”
    2.2 函数名
    成员函数以控件类型名为前缀,以下划线连接,全部使用小写单词。
    2.3 属性名
    属性名使用小写的英文单词,多个单词之间用下划线连接。
    2.4 事件名
    如果控件有自定义的事件,事件名以”EVT”为前缀,使用大写的英文单词,单词之间用下划线连接。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

输入事件处理流程
本文介绍一下 AWTK 中 Pointer 事件和 Key 事件的处理流程。

一、事件处理的三个阶段
第一阶段:子控件处理前。
控件内部实现时,可以重载 on_event_before_children 处理这个阶段的事件。

应用程序开发者可以注册 XXX_BEFORE_CHILDREN 之类的事件处理这个阶段的事件。这些事件包括:

EVT_POINTER_DOWN_BEFORE_CHILDREN
EVT_POINTER_MOVE_BEFORE_CHILDREN
EVT_POINTER_UP_BEFORE_CHILDREN
EVT_KEY_DOWN_BEFORE_CHILDREN
EVT_KEY_UP_BEFORE_CHILDREN
第二阶段:子控件处理。
子控件处理时同样遵循这个三个阶段。

第三阶段:子控件处理后。
控件内部实现时,可以重载 on_event 处理这个阶段的事件。

应用程序开发者可以注册正常的 pointer 事件和 key 事件处理这个阶段的事件。这些事件包括:

EVT_POINTER_DOWN
EVT_POINTER_MOVE
EVT_POINTER_UP
EVT_KEY_DOWN
EVT_KEY_UP
二、事件终止
如果在某个阶段,处理事件后,不希望后面阶段继续处理,让事件处理函数返回 RET_STOP 即可。

AWTK中的窗口动画
窗口动画是现代GUI最基本的功能之一,在窗口打开或关闭时,引入一个过渡动画,让用户感觉这个过程是流畅的。窗口动画的基本原理很简单:在打开或关闭窗口时,把前后两个窗口预先绘制到两张内存图片上,按照指定规则显示两张图片,形成动画效果。

一、介绍
窗口本身只需指定期望的动画类型,由窗口管理器负责在适当的时候(如打开和关闭窗口时),创建窗口动画并让窗口动画绘制到屏幕上。在窗口动画期间,窗口管理器会禁止窗口本身的绘制,并忽略所有输入事件。目前支持的动画有:

普通窗口动画:
htranslate: 左右平移动画(速度最快,嵌入式平台推荐使用)。
vtranslate: 上下平移动画。
slide_up: 向上弹出。
slide_down: 向下弹出。
slide_left: 向左弹出。
slide_right: 向右弹出。

对话框动画:
popup: 向上弹出(速度最快,嵌入式平台推荐使用)。
popdown: 向下弹出。
fade: 淡入淡出动画。
center_scale: 缩放动画(没有硬件时加速慎用)。
以前的bottom_to_top相当于popup,仍然可以使用,但建议用popup代替。
以前的top_to_bottom相当于popdown,仍然可以使用,但建议用popdown代替。

对话框的动画可与对话框的highlight属性一起使用。
在这里插入图片描述

窗口动画有三种实现方式:
在系统支持OpenGL时,使用vgcanvas进行绘制,因为使用了浮点数,整个动画最为平滑。
在系统支持FrameBuffer,使用lcd绘图函数实现动画。
在低端系统上,不启用动画。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch ----注意力机制与自注意力机制的代码详解与使用

注意力机制的核心重点就是让网络关注到它更需要关注的地方 。 当我们使用卷积神经网络去处理图片的时候, 我们会更希望卷积神经网络去注意应该注意的地方,而不是什么都关注 ,我们不可能手动去调节需要注意的地方,这个时候&#x…

centos 7.9离线下载安装vscode,以及插件安装下载

文章目录 一、软件的下载1.采取的方法2.下载相应压缩包3.安装过程4.相关知识 二、插件的安装和下载1.查看vscode的版本号2.查找插件的版本号3.安装vscode插件 三、vscode以及依赖安装包,常用插件百度云: 一、软件的下载 1.采取的方法 从一台联网的cento…

SpringBoot2概览-开发实用篇

知识点 热部署 概念:项目刚启动时需要完成重启重载,而热部署只要重启即可(即仅加载当前开发者自定义开发的资源,不加载jar资源) 重启:加载自定义开发代码,包含类、页面、配置文件等,加载位置在restart类加载…

springboot项目如何将配置文件外挂

为什么要将配置文件外挂 因为springboot项目一般打出来的是jar包,如果要对里面的配置做修改,会比较麻烦,所以需要将配置文件外挂,方便操作哦 怎么做呢 我们先看一个常见的springboot项目的配置文件结构: 分为四个配…

InnoDB的三种行锁(提供具体sql执行案例分析)

InnoDB存储引擎有3种行锁的算法,其分别是: Record Lock(记录锁):单个行记录上的范围 (锁住某一行记录)Gap Lock(间隙锁):间隙锁,锁定一个范围,但不包含记录本…

十大公认音质好的骨传导耳机,几款音质排行靠前的骨传导耳机

骨传导耳机是通过头部骨迷路传递声音,而不是直接通过耳膜的振动来传递声音。与传统的入耳式耳机相比,骨传导耳机不会堵耳朵,在跑步、骑车等运动时可以更好的接收外界环境音,保护听力,提升安全性。此外,骨传…

Canvas基本使用

1.canvas基本使用 1.1.说明: canvas是双标签,h5中新增的属性默认宽高为300*150浏览器默认canvas展示的是一张图片给canvas添加文字内容是没有任何意义的canvas画布:绘制图形,显示一个文字,必须通过js操作 不要通过样式去设置画…

15.OCR

15.1 OCR流水线及七工作原理 Photo OCR:照片 光学字符识别(photo optical character recognition) Photo OCR注重的问题:如何让计算机都出图片中的文字信息,它有以下步骤: 首先给定某张图片,它将图像扫描一遍&#…

基于小程序的用户服务技术研究

目录 1. 小程序开发技术原理 2. 用户服务设计3. 数据库设计和管理4. 安全和隐私保护5. 性能优化和测试总结 关于基于小程序的用户服务技术研究,这是一个非常广泛和复杂的领域,需要涉及多个方面的知识和技术。一般来说,基于小程序的用户服务技…

零基础想入门网安行业,看这一篇就够了!!!

由于我之前写了不少网络安全技术相关的故事文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选&#xff…

跟着AIGC学Linux:简介(一)

文章目录 1.Linux内核的历史2.基本概念3.发行版4.Linux应用领域5.Linux VS Windows横向对比表格: 1.Linux内核的历史 Linux内核最初由一位名叫Linus Torvalds的芬兰计算机科学家于1991年创建。当时,Torvalds是一名赫尔辛基大学的学生,他在寻…

ROS:话题通信机制详解

目录 ROS:通信机制一、话题通信简介二、话题通信实操(C)2.1分析2.2发布方代码2.3订阅方代码2.4配置CMakeLists.txt2.5执行2.6注意 三、话题通信实操(python)3.1分析3.2发布方代码3.3订阅方代码3.4添加可执行权限3.5配置…

Apache Log4j2 漏洞原理

Apache Log4j 远程代码执行漏洞 1.漏洞危害 Apache Log4j被发现存在一处任意代码执行漏洞,由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。经验证,Apache Struts2、Apache Solr、Ap…

Win10控制面板在哪里打开?Win10控制面板打开方式介绍

Win10控制面板在哪里打开?当前很多用户都在使用Win10系统,一些新手用户不清楚在哪里才能打开Win10系统的控制面板,以下给大家介绍三种方式,帮助用户们轻松快速打开Win10控制面板,打开控制面板后用户即可展开不同的设置…

5-1图像信息提取适当剪掉像素点(matlab程序)

代码及运行结果 clear ; close all; gr imread(cameraman.tif); subplot(1,3,1); imshow(gr); subplot(1,3,2); D dct2(gr); F log(abs(D)); imshow(F,[]); subplot(1,3,3); D(abs(D)<200) 0; %会丢掉很多点 &#xff0c;但是原图还可识别&#xff0c;适合做信息提取 M …

这所院校很保护一志愿,学硕爆冷,全部录取,专硕初试第三竟主动放弃录取!

一、学校及专业介绍 广州大学&#xff08;Guangzhou University&#xff09;&#xff0c;简称广大&#xff08;GU&#xff09;&#xff0c;是由广东省广州市人民政府举办的全日制普通高等学校&#xff0c;实行省市共建、以市为主的办学体制&#xff0c;是国家“111计划”建设高…

c语言结构体属性之__attribute__((packed))

c语言结构体属性之__attribute__((packed)) 0. 引出 事情是这样的&#xff0c;最近在做代码移植时见到了这样一段代码 typedef struct {uint16_t len;uint8_t data[PAIRING_MAX_LEN]; } pairing_rx_buffer_t;static pairing_rx_buffer_t pairing_rx_buffer {}; typedef str…

四大世界权威大学排名指标及侧重点

U.S.News、QS、ARWU、THE是公认的四大权威世界大学排名&#xff0c;每个排名的侧重点各有不同&#xff0c;故知识人网小编撰文加以介绍。 很多博士后、访问学者和联合培养博士的申请者会注重学校排名。那么都有哪些排名体系呢&#xff1f;一般来说&#xff0c;国际公认的四大权…

PLC技能在职场中的竞争力如何?

在当前的工作市场上&#xff0c;仅仅掌握PLC可能会限制您的竞争力。尽管PLC在自动化控制系统中扮演重要的角色&#xff0c;但现代工业界对多样化技能和知识的需求越来越高。 为了提高竞争力&#xff0c;以下是一些建议&#xff1a; 学习其他自动化技术&#xff1a;除了PLC&am…

人脸跟踪:基于人脸检测API的连续检测与姿态估计技术

人脸跟踪技术在视频监控、虚拟现实和人机交互等领域发挥着重要作用。通过连续的人脸检测与姿态估计&#xff0c;可以实现对人脸在视频序列中的跟踪和姿态分析。 本文将介绍基于人脸检测API的人脸跟踪技术&#xff0c;探讨其原理、应用场景以及未来发展前景。 人脸跟踪的意义和…