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