Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android動畫之入門篇(一)

Android動畫之入門篇(一)

編輯:關於Android編程

作為Android開發者,動畫是非常重要的知識點,本文主要從入門角度來探索動畫。 Android的動畫主要包括三大類:逐幀(Frame)動畫補間(Tween)動畫屬性動畫

1. 逐幀(Frame)動畫

逐幀動畫是最容易理解,最簡單的動畫。但需要把動畫過程的每一幀靜態圖片都放到資源文件夾res/drawbale下,然後由Android來控制依次顯示這些靜態圖片,利用人眼“視覺暫留”的原理,從而產生“動畫”的錯覺。實現方式與電影、動漫的原理一樣。

每一幀的圖片,可以是比如.jpg, .png格式的圖片文件,也可以是通過xml定義的圖形。下面通過一個實例來講解逐幀動畫的使用。

1.1 動畫資源文件

frame_animation.xml放在文件夾res/drawable/下,該逐幀動畫包含3張圖片wheel0.png, wheel1.png, wheel2.png:

 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    <item android:drawable="@drawable/wheel2" android:duration="50" />
 </animation-list>

1.2 調用方法

 ImageView img = (ImageView)findViewById(R.id.wheel_image);
 img.setBackgroundResource(R.drawable.frame_animation);
 AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
 frameAnimation.start();

1.3 參數說明

  • android:oneshot, true:動畫只播放一遍, false:循環播放;
  • android:duration:該幀時長,單位ms(毫秒)。

2. 補間(Tween)動畫

補間動畫,只需指定動畫開始幀、結束幀,而對於動畫中間的過程,都有系統計算來填充的,而無需定義中間的每一幀。 動畫變化主要包括4類型: 透明度動畫(Alpha),縮放動畫(Scale),位移動畫(Translate),旋轉動畫(RotateAnaimation)

1.1 動畫資源文件

tween_animation.xml放在文件夾res/anim/下, 該動畫同時包括透明度,縮放,位移,旋轉4種變化,當然也可以是其中一種,或幾種變化的組合。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >

    <alpha
        android:fromAlpha="0.5"
        android:toAlpha="1.0"
        android:duration="1000" />

    <scale
        android:fromXScale="0.01"
        android:toXScale="1.0"
        android:fromYScale="0.01"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="true" />

    <translate
        android:fromXDelta="0.01"
        android:toXDelta="0.95"
        android:fromYDelta="0.01"
        android:toYDelta="0.95" />

    <rotate
        android:fromDegrees="0.01"
        android:toDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%" />
<set>

1.2 調用方法

 ImageView img = (ImageView)findViewById(R.id.wheel_image);
 Animation tweenAnimation = AnimationUtils.loadAnimation(this, R.anim.tween_animation);
 img.startAnimation(tweenAnimation);

1.3 參數說明

  • android:interpolator 插值器,用於指定動畫的效果; 插值器原理,請移步Android動畫之原理篇(三)
  • android:shareInterpolator, true:所有子元素共享同一插值器;false不共享;
  • android:fillBefore, true:動畫執行完成後停留在動畫的第一幀;
  • android:fillAfter , true:動畫執行完成後停留在動畫的最後一幀;
  • android:fillEnabled,true:fillBefore/fillAfter才能生效
  • android:duration, 動畫持續時長,每一個動畫都可以單獨指定duration;

  • alpha,透明度動畫,其中0表示完全透明,1表示完全不透明:
    • fromAlpha: 起始透明度
    • toAlpha : 結束透明度
  • scale,縮放動畫,其中0表示收縮到無,1表示正常無縮放:
    • fromXScale: 起始X坐標的縮放比例
    • toXScale : 結束X坐標的縮放比例
    • fromYScale: 起始Y坐標的縮放比例
    • toYScale : 結束Y坐標的縮放比例
    • pivotX : 軸中點X坐標的位置比例
    • pivotY : 軸中點Y坐標的位置比例
  • translate,位移動畫:
    • fromXDelta: 起始X方向位置比例
    • toXDelta : 結束X方向位置比例
    • fromYDelta: 起始Y方向位置比例
    • toYDelta : 結束Y方向位置比例
  • rotate, 旋轉動畫:
    • fromDegrees: 起始角度,單位度
    • toDegrees : 結束角度,單位度
    • pivotX : 旋轉中點X坐標的位置比例
    • pivotY : 旋轉中點Y坐標的位置比例

3. 屬性動畫

屬性動畫,是補間動畫的增強版,但更加靈活。可直接修改任何屬性,使之形成動畫,功能非常強大,也是最常用的動畫。下面舉個簡單的例子:

ObjectAnimator anim = ObjectAnimator.ofFloat(targetObject, "alpha", 0f, 1f);
anim.setDuration(1000);
anim.start();
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved