Qt動畫框架

2021-07-08 14:46:25 字數 3623 閱讀 9034

雖然現在大多數專案的動畫都是用qml在做了,反正了解了解也沒什麼壞處,或許以後也用得到。

缺少一張圖。。。公司網速太慢,傳不上去。

(其實也就是qt動畫框架類,了解即可)

qabstractanimation 所有動畫類的基類

qanimationgroup 動畫容器類的抽象基類 (記憶一下,挺重要)

——qparallelanimationgroup 並行動畫容器 (多個動畫同時執行)

——qsequentialanimationgroup 序列動畫容器 (動畫乙個接乙個的執行)

qeasingcurve 動畫控制的緩和曲線類(動畫的執行方式(參考手機介面彈出方式))

qpauseanimation 物件暫停延時

qpropertyanimation qt動畫屬性操作(重要,用於同qobject的屬性通訊(比如widget的一些大小和座標))

qtimeline 動畫控制的時間片類

qvariantanimation 動畫類的抽象基類

這裡就不多說廢話了,直接上例子,看看裡面的一些方法和機制

(也都是網上常有的一些例子)

**這裡就看看這幾個方法的使用

.setduration

.setstartvalue

.setendvalue**

//建立乙個按鈕

qpushbutton button("animated button");

button

.show();

//建立乙個動畫的屬性物件(該動畫,基於button)

qpropertyanimation animation(&button, "geometry");

//關於這個建構函式,我已開始有很多問題

//第乙個引數,哪個控制項

//第二個引數,是該控制項的某個屬性(動畫也就是基於該屬性的變化)

animation

.setduration(10000);

//設定動畫的持續時間————動畫從開始到結束的時間

animation

.setstartvalue(qrect(0, 0, 150, 50));

//設定起始位置

animation

.setendvalue(qrect(250, 250, 100, 30));

//設定結束位置

animation

.start();

**主要看看這個方法的使用

.setkeyvalueat**

qpushbutton button("animated button");

button

.show();

qpropertyanimation animation(&button, "geometry");

animation

.setduration(10000);

//動畫設定10s

animation

.setkeyvalueat(0, qrect(0, 0, 100, 30));

animation

.setkeyvalueat(0.8, qrect(250, 250, 100, 30));

animation

.setkeyvalueat(1, qrect(0, 0, 100, 30));

//前8s 向右下移動

//後2s 向左上移動

animation

.start();

**主要關注這些方法的使用

.seteasingcurve**

qpushbutton button("animated button");

button

.show();

qpropertyanimation animation(&button, "geometry");

animation

.setduration(3000);

animation

.setstartvalue(qrect(0, 0, 100, 30));

animation

.setendvalue(qrect(250, 250, 100, 30));

animation

.seteasingcurve(qeasingcurve::outbounce);

//控制移動的軌跡(回彈)

animation

.start();

多個動畫視窗,這裡就要注意

qsequentialanimationgroup

qparallelanimationgroup

這兩個類的使用

並行動畫

qpushbutton *bonnie =

new qpushbutton("bonnie");

bonnie->show();

qpushbutton *clyde =

new qpushbutton("clyde");

clyde->show();

qpropertyanimation *anim1 =

new qpropertyanimation(bonnie, "geometry");

// 這裡的動畫是基於bonnie的

qpropertyanimation *anim2 =

new qpropertyanimation(clyde, "geometry");

//這裡的動畫是基於clyde的

qparallelanimationgroup *

group

=new qparallelanimationgroup;

//這裡注意啦:這就是並行輸出,同時的

group

->addanimation(anim1);

group

->addanimation(anim2);

group

->start();

序列動畫

qpushbutton button("animated button");

button.show();

qpropertyanimation anim1(&button, "geometry");

anim1.setduration(3000);

anim1.setstartvalue(qrect(0, 0, 100, 30));

anim1.setendvalue(qrect(500, 500, 100, 30));

qpropertyanimation anim2(&button, "geometry");

anim2.setduration(3000);

anim2.setstartvalue(qrect(500, 500, 100, 30));

anim2.setendvalue(qrect(1000, 500, 100, 30));

qsequentialanimationgroup group;

//這裡就是序列啦

group.addanimation(&anim1);

group.addanimation(&anim2);

group.start();

ios swift Spring動畫框架使用

pod spring git 動畫型別 pop 大小彈性縮放效果 shake 左右搖晃效果 morph 左右上下彈性變形效果 squeeze 左右上下彈性擠壓效果 wobble 左右擺動上下震動效果 swing 左右擺動效果 flipy 上下翻轉效果 flipx 左右翻轉效果 fall 掉落的效果 ...

Android 動畫框架詳解

2.原理 現有的 android 動畫框架是建立在 view 的級別上的,在 view 類中有乙個介面 startanimation 來使動畫開始,startanimation 函式會將乙個 animation 類別的引數傳給 view,這個 animation 是用來指定我們使用的是哪種動畫,現有...

開源動畫框架Facebook的Pop

一提到動畫,首先想到的應該是pop,應用非常廣泛!接下來分享一些我所知道的,首先匯入pop,用cocoapod可以輕鬆匯入 pod pop 上最基礎的使用方法 1.import pop pop.h 2.彈出動畫 void showpopwithpopbutton uibutton abutton s...