APP開發(fā)實(shí)戰(zhàn)86-View動(dòng)畫

22.2View動(dòng)畫

View動(dòng)畫就是很多書籍所說的TweenedAnimation(有人翻譯為補(bǔ)間動(dòng)畫),它通過對(duì)場(chǎng)景里的對(duì)象不斷做圖像變換(平移、縮放、旋轉(zhuǎn)和透明度)從而產(chǎn)生動(dòng)畫效果,它是一種漸進(jìn)式動(dòng)畫。動(dòng)畫的作用對(duì)象是View,支持四種動(dòng)畫效果,對(duì)應(yīng)Animation的四個(gè)子類,具體如下表所示:

名稱

標(biāo)簽

子類

效果

平移動(dòng)畫

TranslateAnimation

移動(dòng)View

縮放動(dòng)畫

ScaleAnimation

放大或縮小View

旋轉(zhuǎn)動(dòng)畫

RotateAnimation

旋轉(zhuǎn)View

透明度動(dòng)畫

AlphaAnimation

改變View的透明度

對(duì)于View動(dòng)畫,通常也是用XML文件定義動(dòng)畫:


Android="http://schemas.android.com/apk/res/android"

android:interpolator="@[package:]anim/interpolator_resource"

android:shareInterpolator=["true"| "false"] >

android:fromAlpha="float"

android:toAlpha="float"/>

android:fromXScale="float"

android:toXScale="float"

android:fromYScale="float"

android:toYScale="float"

android:pivotX="float"

android:pivotY="float"/>

android:fromXDelta="float"

android:toXDelta="float"

android:fromYDelta="float"

android:toYDelta="float"/>

android:fromDegrees="float"

android:toDegrees="float"

android:pivotX="float"

android:pivotY="float"/>

...

該文件只能有一個(gè)根結(jié)點(diǎn),可以是、、、或。結(jié)點(diǎn)可以包含子節(jié)點(diǎn),即可以包含、、、或。

android:interpolator表示所使用的interpolator,可以是系統(tǒng)自帶,也可以是自定義。

android:shareInterpolator表示是否將該Interpolator共享給子節(jié)點(diǎn)。

android:pivotX和android:pivotY定義的是此次動(dòng)畫變化的軸心位置,默認(rèn)是左上角,當(dāng)我們把它們兩者都賦值為50%,則變化軸心在中心。

具體實(shí)例:

android:shareInterpolator="false">

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromXScale="1.0"

android:toXScale="1.4"

android:fromYScale="1.0"

android:toYScale="0.6"

android:pivotX="50%"

android:pivotY="50%"

android:fillAfter="false"

android:duration="1000"/>

android:interpolator="@android:anim/accelerate_interpolator"

android:startOffset="1000">

android:fromXScale="1.4"

android:toXScale="0.0"

android:fromYScale="0.6"

android:toYScale="0.0"

android:pivotX="50%"

android:pivotY="50%"

android:duration="400"/>

android:fromDegrees="0"

android:toDegrees="60"

android:toYScale="0.0"

android:pivotX="50%"

android:pivotY="50%"

android:duration="400"/>

andoird:fillAfter:動(dòng)畫結(jié)束以后View是否停留在結(jié)束位置,true表示停留,false表示不停留。

startOffset:該屬性定義動(dòng)畫推遲多久開始,通過這個(gè)屬性的設(shè)置,我們可以設(shè)計(jì)一些前后按序發(fā)生的動(dòng)畫,當(dāng)然,除了最后一個(gè)發(fā)生的動(dòng)畫,其他動(dòng)畫得設(shè)置fillAfter為true。

使用代碼:

AnimationdemoAnim = AnimationUtils.loadAnimation(this, R.anim.demoanim);

demoAnim.startAnimation(demoanim);

參考:《Android開發(fā)藝術(shù)探索》和?http://blog.csdn.net/chziroy/article/details/40456399

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容