應用程序列表轉起來
?我的需求
拒絕應用程序列表的1234陳列圖標狀,實現360°轉動效果。
PS:錄制效果很卡,幀效果很差,實際效果很流暢,請發揮最完美的想象-_-||
?我的實現方案
我用 QPropertyAnimation 實現Button的轉動效果。思路就是,在一個周期時間里,對應改變Button的坐標位置。
為了讓效果看起來更平滑,更自然,建議多定義幾個狀態 0,0.3,0.5 ,0.7, 1為宜,根據屏幕大小具體分析。
QPropertyAnimation
*
animation
=
new
QPropertyAnimation
(
button
,
"geometry"
);
animation->setDuration(clk); animation->setKeyValueAt(0,QRect(x1, y1, w1, h1)); animation->setKeyValueAt(0.5,QRect((x1+x2)/2, (y1+y2)/2+20, ((w1+w2)*2)/3, (h1+h2)/2)); animation->setKeyValueAt(1,QRect(x2, y2, w2, h2)); |
在改變位置的同時,需要讓按鈕上的圖標圖片也隨著自然改變大小。
QPropertyAnimation * animationlefticon = new QPropertyAnimation ( button , "iconSize" ); animationlefticon -> setDuration ( clk ); animationlefticon -> setKeyValueAt ( 0 , QSize ( w1 , h1 )); animationlefticon -> setKeyValueAt ( 0.5 , QSize (( w1 + w2 )/ 2 ,( h1 + h2 )/ 2 )); animationlefticon -> setKeyValueAt ( 1 , QSize ( w2 , h2 )); |
這樣僅僅是一幀的操作,即位置改變一次。(以第一個button為例,反復的從左邊的位置移到中間的位置)
怎么樣實現狀態的連續改變,怎么樣記錄每個按鈕當前的位置的信息值?
當應用程序列表中的程序個數大于3個,如何實現交替輪換其中的3個顯示?
———— 答案 是:用一個array[]來更新當前幀的位置信息
//用apparray記錄應用程序列表,用int f 來標記當前幀所指向的app apparray[0] = button1; apparray[1] = button2; apparray[2] = button3; ...... apparray[n-1] = buttonn; f = 1;
//每次改變狀態后,刷新當前位置 f++; if(f<0) f=n-1; if(f>n-1) f=0;
void update() { if((f-1)<0 ) left = apparray[2]; else left = apparray[f-1]; if((f+1)>n-1) right = apparray[0]; else right = apparray[f+1]; } |
?寫在最后
歡迎交流,歡迎轉載,但是希望你尊重我,注明出處,謝謝。
——茜。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
