一、界面布局以及资源添加
\! H& _0 C9 }! C* c2 j1、创建自定义控件
Y. d5 g! g ^5 V! ~2 N: z+ u- d* t
9 A* `' b- M! ~; g
" u- o, P( e, z! u) i2、创建主screen界面
+ t7 ?, r4 v( \$ [6 ?7 T9 Z指定Sscrcroll List的样式为自定义控件* J. y% [ \$ d+ w9 p# c0 R) L
# A: [: A/ n2 V' |6 Q
5 C! M) M$ N' T
- a' Y$ I, _; I& a& U备注: 为了方便演示,本工程的背景图直接用的touchgfx界面里自带的图片。( B4 `9 \ u/ Q. L/ A8 ~# t j, s2 j
8 S' R4 J' j, \7 T二、功能实现
( _% B7 P- \+ x4 G5 V- H0 f3 w1、自定义控件设置图片方法实现
% i* q0 N( x8 n* |1 o9 @- //.h文件中声明如下
! r7 W# v. _9 [9 ]2 S7 O3 a; M - void setBitmap(int16_t index);
复制代码
! J& l( R9 W8 |9 e$ m$ _
" N q) z, r& H# ]9 R1 U% l0 L T; B# s7 ?" ]6 V
2、实现Scroll List的虚函数0 H& p$ ]1 l/ i, c
- 下图是Scroll List的虚函数,每次更新item时会调用
复制代码
$ A0 _4 ]9 I! o
5 k! d. \ p1 S* p9 F( M+ {
) {7 J( ~& K# J g% T1 W* K/ I; [3、主界面的构造函数中添加界面初始化代码& t1 O3 h o+ j- a% U7 v9 M
- //别忘记增加图片头文件8 z9 f& K9 }8 w$ |
- #include "BitmapDatabase.hpp". @) ^2 G5 [# O$ w# u8 ^3 R7 w
- //采用参数列表初始化方式: |, C3 v+ L( f# ]" W/ h5 w) ~& a
- Screen2View::Screen2View():callback(this,&Screen2View::callbackHandler)
6 _6 v# H1 i: ^/ \( k5 Z0 |5 o - {& Z, d, X+ I" y
- scrollList1.setItemSelectedCallback(callback);
% b% q7 D M- i9 x" X+ K$ ?$ \ d - scrollList1.animateToItem(scrollList1.getNumberOfItems() / 2);
. t0 n9 S9 e4 o+ x1 p - }
复制代码
; O4 P3 H3 ? S1 o; Q* s4、回调函数的实现
% H7 O1 d$ z" P$ V. A0 W7 Y! S; q( K# G# |
- V2 @1 [6 C1 L4 ~
6 Z2 N6 s! _, h6 E1 O7 b( e
- void Screen2View::callbackHandler(int16_t index)
) o+ I: g8 y5 J# k8 s7 l( j; _ - {
* `- L" n, V# ~4 l5 { - box1.invalidate();# @* k( C: q8 a- n! G
- switch (index)
H5 U* H# ^ `6 L6 R$ X - {0 E- g* U, U) i& Y/ Z( y3 D
- case 0: g1 A: v; U# \
- image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_CALENDAR_48_ID));
. }0 m4 Q& Y, J) D8 I! e1 g - break;
. i9 m( i% Z% d - case 1:
' d6 A. z# \$ Z6 U - image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_DOCUMENT_48_ID));
2 R0 E9 T5 h$ F2 e - break;0 R2 m" y0 F$ x+ [) U/ C( S4 w
- case 2:9 I3 ^- d0 X3 w0 c
- image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_FOLDER_48_ID));0 l, ~; }% w5 M% f
- break;# k# _8 F/ s1 A, v5 u7 ~+ j, @
- case 3:
+ y* O& c& s {' p - image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_INBOX_48_ID));
- i- `: c5 w6 |: o3 v - break;" }" e6 L* l! n
- case 4:
3 N0 H6 W4 h" f& W- C$ l Q - image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_MOVIE_48_ID)); , b. J4 V3 r3 i5 S3 v
- break;' ]. _8 ?; k$ s7 ?( q D# N- a
- default: break;, P! m& u1 F1 O6 o
- }5 h1 z+ t6 f/ w9 g3 g* l% d
- image1.invalidate();
( a8 X6 P( ?0 a! t( o- i - }) N( `7 o2 j/ }: _
2 H6 H; @& l# F+ N& W4 F
复制代码
8 K3 U9 S2 E; D: k+ {! h" ^2 n& o |