你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

实战经验 | TouchGFX 处理按钮长按的一种方法

[复制链接]
攻城狮Melo 发布时间:2024-2-20 09:01
实战经验 | TouchGFX 处理按钮长按的一种方法
目录预览
% y3 |+ x+ P1 E, \  S$ ~1、前言6 i4 N2 }; D' s5 V
2、操作方法3 Y6 a" I8 i  U9 K8 S
3、总结
01前言
# \/ [/ `2 y3 g% |
$ w" Y" M  E& {. w3 G
+ c" {2 ~* l6 h5 j
在使用 TouchGFX 设计 UI 界面时,用同一按钮的长按和短按表示不同的功能是个比较常见的实际需求。普通的 Button 控件可以通过 Interactions 处理一些基本的交互动作,通过下面一些简单的操作,我们可以将这个普通的 Button 改造成可以根据不同的按键时间处理不同事务的多功能按钮。
- b3 N$ V& x$ M6 k  c! D
& G9 T8 t; U4 h" R( i% B02操作方法
6 g  I3 n3 E/ z' P' V$ V( b7 v0 F  Z8 ?
1 ?" {3 O5 j/ h; W
(1)创建一个按钮,并在 Mixins 中勾选 ClickListener 功能,使 Button 能够响应触控输入。
& ~9 t' y* r2 e- y9 ^
11.png
图1.Enable ClickListener

. J; s, l% c, a% [启用 ClickListener Mixin 后,会更改生成的控件的声明,下面的代码表示 button1 启用了 ClickListener Mixin。9 w9 F% I+ {( q8 k5 d6 \
12.png
(2)用户代码中实现回调
6 V. k1 J7 f+ M( Z9 A4 U
  H8 I' \+ V+ ~* ~/ b' q! l
3 Y4 b, f7 B( j$ f, p
在 TouchGFX Designer 中对 Button 控件启用 ClickListener Mixin 后,下一步是在这个 Button 所在的 Screen 的头文件中添加控件的 Click 的回调和其回调处理函数的声明。! @* P) G- r1 y

: E9 D8 m! l& M
2 i( u0 B3 ^2 u
回调函数的声明应包含以下三点内容:要绑定的类名,此例中为 Screen1View;回调来自哪个Widget,此处为 Button;以及发生事件的类型 ClickEvent。' }: W7 H& k$ d- b$ z
13.png
然后,将回调函数的声明和回调函数的处理函数绑定到视图对象。
; b: w/ n, R5 _" \
14.png
下一步是通过 setClickAction()的方法告诉 Button1 这个 Widget,当它被按下时,去调用哪个回调函数。: x7 w1 p6 F/ h" [- b
15.png
最后,实现回调函数的处理函数,同时可以根据需要自行增加按钮按下和释放时的处理。6 t) Q) s8 J+ n$ J* ?
16.png

/ Q* T; a* v/ T(3)添加 handleTickEvent()声明和定义,用于处理计时相关逻辑,此函数以 60Hz 的频率被TouchGFX 引擎调用。$ e* ^' @! F! {% U
17.png
(4)根据实际应用需求实现长按键的处理6 H4 S8 e: r3 h. T
5 W' ~8 H. E: t9 @
( r5 Q: ~9 W* n- T; I! g6 ?8 {7 R' }
在我们的测试例程中,实现了三秒长按键后,切换 Text 文本显示的功能,如下。8 ~" @0 @5 c6 n2 j/ r
18.png
图2.长按前效果
19.png
图3.长按 3S 后效果
- l$ L2 v# T2 p& K+ A1 I% ?
03总结
/ Z  O. V+ X# X8 N; ?7 \
6 o# b* s) w$ \2 S0 L- |本文解释了如何通过 ClickListener 实现对按钮控件自定义功能,实际应用中大多数的Widgets 以及 View 本身都可以通过 ClickListener 实现点击和释放时的自定义处理。+ k  `( I; C- Z5 i7 {4 E, S6 S
4 {1 G: U2 i! O3 I+ ?, E' w
收藏 评论1 发布时间:2024-2-20 09:01

举报

1个回答
xu@xupt 回答时间:2024-2-25 19:22:51

学习啦~~~

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版