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

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

[复制链接]
攻城狮Melo 发布时间:2024-2-20 09:01
实战经验 | TouchGFX 处理按钮长按的一种方法
目录预览  r6 L/ b. _) e1 O
1、前言
# b' _8 ?1 `3 U4 q5 [* [4 k2、操作方法
) w& s; n5 O6 F7 L2 J* j3、总结
01前言
+ E& K% E, n4 `% t  r1 J: P4 H, `& D+ A
4 X* f* I7 c$ X: u* f4 V
在使用 TouchGFX 设计 UI 界面时,用同一按钮的长按和短按表示不同的功能是个比较常见的实际需求。普通的 Button 控件可以通过 Interactions 处理一些基本的交互动作,通过下面一些简单的操作,我们可以将这个普通的 Button 改造成可以根据不同的按键时间处理不同事务的多功能按钮。
7 B4 A. B5 s) B3 y" z# q# M' S9 s9 d* C: s; h# z  g& p: f9 E
02操作方法
5 y9 n. m  m; D7 V7 _$ h  L1 B0 G
7 I3 B% [4 d+ R+ N

9 [; l( ?: M' ]! }(1)创建一个按钮,并在 Mixins 中勾选 ClickListener 功能,使 Button 能够响应触控输入。
' m/ d+ R0 l! T  P
11.png
图1.Enable ClickListener
. P, ?) \/ A8 g0 p
启用 ClickListener Mixin 后,会更改生成的控件的声明,下面的代码表示 button1 启用了 ClickListener Mixin。
! d. g; H. i; R9 O
12.png
(2)用户代码中实现回调# Y. ^* J8 i$ x* v% Y+ p

% M( p' U7 t$ X' H, t
+ i  p' f% j* J. p  \. u  p' v
在 TouchGFX Designer 中对 Button 控件启用 ClickListener Mixin 后,下一步是在这个 Button 所在的 Screen 的头文件中添加控件的 Click 的回调和其回调处理函数的声明。
0 H/ S/ \, l- U+ {: @5 x
5 s3 K9 y: ?# o/ X+ n, C
  @; _9 [. h7 K7 W" V% W
回调函数的声明应包含以下三点内容:要绑定的类名,此例中为 Screen1View;回调来自哪个Widget,此处为 Button;以及发生事件的类型 ClickEvent。
) ^. @: i5 [* W0 T
13.png
然后,将回调函数的声明和回调函数的处理函数绑定到视图对象。
' r$ o0 l9 `' ]1 x/ j  j& m
14.png
下一步是通过 setClickAction()的方法告诉 Button1 这个 Widget,当它被按下时,去调用哪个回调函数。. C5 x6 t' I. Y# p8 b
15.png
最后,实现回调函数的处理函数,同时可以根据需要自行增加按钮按下和释放时的处理。: H  S) y; U  V/ V( u) s7 b
16.png

: d' F' r1 z, e# e6 Q* V1 l(3)添加 handleTickEvent()声明和定义,用于处理计时相关逻辑,此函数以 60Hz 的频率被TouchGFX 引擎调用。8 N  M8 t* N7 v' k
17.png
(4)根据实际应用需求实现长按键的处理
! e5 G! y6 {  S+ {, N9 s$ O- Z" K- @6 l* @5 v7 A

* q- n( Z$ p8 h在我们的测试例程中,实现了三秒长按键后,切换 Text 文本显示的功能,如下。
5 V4 l2 E8 ?, n* X
18.png
图2.长按前效果
19.png
图3.长按 3S 后效果
- L. A3 K  E* L5 d1 O
03总结+ S/ B6 z5 i. B6 q% x  t4 _' X" ^  u

: d! w+ U/ O! j本文解释了如何通过 ClickListener 实现对按钮控件自定义功能,实际应用中大多数的Widgets 以及 View 本身都可以通过 ClickListener 实现点击和释放时的自定义处理。5 }8 i! l" \3 |* _
& U- {, r. t3 q7 ], {
收藏 评论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 手机版