【Android介面實現】View Animation 使用介紹

來源:互聯網
上載者:User

標籤:介面   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 使用介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.