【Android界面實現】View Animation 使用介紹
? ? 轉載請註明出處:http://blog.csdn.net/zhaokaiqiang1992
? ? 我們能夠使用view animation 動畫系統來給View控件加入tween動畫(下稱“補間動畫”),補間動畫通過計算一些動畫參數,比方說開始點,結束點,大小,旋轉角度和一些其它的動畫參數。來實現動畫效果。
? ? 補間動畫能夠給View對象加入一系列簡單的變換。比方位置,大小,角度或者是透明度。所以,假設你有一個TextView對象。你能夠移動,旋轉或者是變大。
假設它有一個背景圖片,背景圖片也會隨著text進行變化。
? ??http://developer.android.com/reference/android/view/animation/package-summary.html 這個地址提供了補間動畫須要的全部類。
? ? 一系列的動畫指令被定義為補間動畫,我們能夠使用xml文件或者是純代碼進行定義。當我們想定義一個布局的時候。xml文件更加的方便,由於相對於硬編碼。它可讀性好、復用性強而且易於替換。所以,在以下的實例中,我們將使用xml的方式(想要了解很多其它的關於硬編碼而不是xml方式的信息,請查閱AnimationSet類和Animation的子類)。
? ? 我們能夠通過設置屬性來決定我們想要動畫什麽時候發生,持續的時長等等。
動畫的變換能夠是順序發生的,也能夠是同一時候發生的。比方。我們能夠把一個TextView從左移動到右,然後旋轉180度。或者是,我們能夠讓移動的動畫和旋轉動畫同一時候發生。
每一種動畫變換都須要設置自己特有的屬性集合(大小變化須要設置開始大小和結束大小,旋轉變化須要設置開始角度和結束角度,其它的也相似),還須要設置一些共同的屬性,比方開始時間和持續時間。
假設我們想讓非常多變換一起發生,給他們設置同樣的開始時間就可以。假設想讓變換順序發生,我們僅僅須要把開始時間設置成前面動畫的持續總時間就能夠了。
? ?假設我們想通過xml文件創建動畫,我們須要在project的res文件夾下,創建一個anim文件夾。文件必須有且僅僅有一個根元素。比方<alpha>,
? ? 以下的這個xml文件來自ApiDemo,用來伸縮然後同一時候旋轉一個View對象。
<set android:shareInterpolator="false"> <scale 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="700" /> <set android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" android:fillBefore="false" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" /> </set> </set>
? ? 屏幕的坐標系的(0。0)點在屏幕的左上角上面。向右為x正坐標,向下是y的正坐標。
? ? 一些值,比方說pivotX,能夠指定與自身或者是父類相關。請確保你使用的格式是你想要的效果的正確格式,比方,50%是相對於自身的50%,可是50就不一樣了。
? ? 我們也能夠指定一個interpolator(插值器)來確定變換的時間怎樣變化。Android裏面包括了幾中插值器子類。每一種都有自己的加速度曲線。比方accelerateInterpolator,會告訴變換在開始的時候速度比較慢。然後開始加速。我們能夠在xml裏面設置相關的屬性。
? ? 假設我們把上面的代碼叫做hyperspace_jump.xml,那麽我們使用以下的代碼。給一個ImageView控件加入動畫。
? ??
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); spaceshipImage.startAnimation(hyperspaceJumpAnimation);? ? 作為startAnimatinon()的一個可選的方式。我們能夠使用Animation,setStartTime()設置開始時間。然後使用View,setAnimation()設置動畫
? ? 假設想了解很多其它XML使用方法和可選的tag的屬性,請查看Animation Resources。
? ? Note:
? ? 無論你的動畫是移動還是放縮,設置了動畫的View控件的邊界都不會自己主動調整去適應,即使如此,動畫依舊會被繪制出來,及時超出了邊界也不會被分割。然而,假設動畫超出了父View的範圍,那超出部分就會被分割。
? ? 原文地址:http://developer.android.com/guide/topics/graphics/view-animation.html
【Android界面實現】View Animation 使用介紹