標籤:介面 xml檔案 ceshi 屬性集 edit 動畫系統 content 定義 曲線
? ? 轉載請註明出處: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>,<scale>,<translate>,<rotate>,插值器元素。或者是一個<set>元素裡麵包括這些動畫元素(也能夠再包括一個set元素)。假設我們想讓動畫順序發生,我們比方設定單獨的startOffset屬性。就像以下的範例。
? ? 以下的這個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 使用介紹