一、界面布局以及资源添加; ^1 y! c. _7 h+ J* |+ c& U
1、创建自定义控件6 N& P3 v/ \; P: a
5 n- b) Z) X" G; j
' r1 A* n: V; T: [% J
4 b. H( r0 D' y# u# V) A0 H& P
2、创建主screen界面( }8 L/ _' m2 w" T
指定Sscrcroll List的样式为自定义控件
4 S4 y0 n/ O# H; F9 k( a" N
8 P/ Y$ b' U0 ?9 k8 `" v' M
3 I/ H/ _. b6 x) W/ L/ B( V# t
' I5 l. P+ j# U8 ~备注: 为了方便演示,本工程的背景图直接用的touchgfx界面里自带的图片。
$ {9 a, l# f+ G
$ g1 Y; z4 a3 x% Z2 T' F5 J+ ~二、功能实现
( v5 U3 b( O' h/ ]. p3 y1、自定义控件设置图片方法实现$ R8 B/ ?, d; h( J5 | n0 i
- //.h文件中声明如下
; X, r. ?5 U8 ~1 Q! N7 o: h - void setBitmap(int16_t index);
复制代码
; k2 M( q/ w: o. z2 A
& C8 ]" S+ P; G m" h2 U: Q) _6 I6 w [: T3 a, X
2、实现Scroll List的虚函数2 ]& B% }! K% S. v9 F$ ?
- 下图是Scroll List的虚函数,每次更新item时会调用
复制代码
9 s1 N% ^; f# o2 Z+ [+ a
- D; V% a$ |6 d. n- _+ h* w, e
# j; V' @! w( v" U @+ h8 N3、主界面的构造函数中添加界面初始化代码* y' S. I7 i4 `' d+ X
- //别忘记增加图片头文件' J5 f9 c6 I6 c( M. d
- #include "BitmapDatabase.hpp"
i. F5 q8 Q/ e - //采用参数列表初始化方式# G# f: m8 h1 }/ G3 R
- Screen2View::Screen2View():callback(this,&Screen2View::callbackHandler)! m- E4 s/ `, l6 w3 o+ o+ w
- {; Y7 p; w3 I1 F8 ~6 N$ ?
- scrollList1.setItemSelectedCallback(callback);
' \ ` t. ^7 Q* b# Y# h2 } - scrollList1.animateToItem(scrollList1.getNumberOfItems() / 2);# `, A, N5 w( _( P" j% K
- }
复制代码 : o2 m- F6 W0 g5 }1 N
4、回调函数的实现
: q. R8 k [$ U' K/ M4 r! \* z; T7 W! u# j" @; ?
, f. G V0 ^9 X( l# P0 j6 d- Z" R, c8 y2 w2 V' ^/ W7 D
- void Screen2View::callbackHandler(int16_t index)
+ h8 I9 p( b) m" A - {
* Y- _4 h5 e( C5 B7 V! w. V* d9 D - box1.invalidate();
7 I7 [! c; f+ U! [ - switch (index)
: j+ D) F A1 H8 N! _1 w - {
" h3 D( o3 B O0 s - case 0:5 N) T2 z+ R7 C
- image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_CALENDAR_48_ID));
3 s7 w5 y' s3 N* y' H - break;
* |6 @$ H* U$ u- y# e0 S - case 1:
- A: F& s1 p% t8 o- N/ m4 P - image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_DOCUMENT_48_ID));
Q$ Q- A1 R# d0 M! Z, C - break;& t* s' S3 L3 R
- case 2:2 d! P+ s" \0 o
- image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_FOLDER_48_ID));3 f: p5 r: S* j8 y# c% [0 l- c
- break;
: a, ^4 c9 g7 k! |1 g% v - case 3:
8 l( }1 V: W# H - image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_INBOX_48_ID));- s4 X$ o( c$ Z/ Z
- break;) j- T/ J: h/ U
- case 4:
% M8 ^# O1 ^* B" w @ - image1.setBitmap(Bitmap(BITMAP_DARK_ICONS_MOVIE_48_ID)); ( ?& b1 n" ]1 O1 b# a8 R- |! u! _( X
- break;
( }; R& W5 j( i$ O0 Z - default: break;
2 B' f+ Z; i7 u- C - }
9 x% E; A" M: z$ V - image1.invalidate();! f$ n0 A/ Z# A8 [6 x# d0 e
- }$ {2 Y4 C5 R2 p# }, d* Q
- [' v I8 \; M
复制代码 6 ?" i& V) ^1 l6 p' r2 z [% k
|