Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Animation總結

Animation總結

編輯:關於Android編程

Android提供了兩類的Animation:

1. Property Animation——相關類在包android.animation中

2. View Animation——相關類在android.view.animation中,也即它是與視圖相關的


View Animation又分了兩類:

(1)Frame Animation——它相關的使用類是AnimationDrawable

我們只需要記住這是一個Drawable,它的使用與其它Drawable資源並沒有多大的不同。當然AnimationDrawable也提供了相應的接口,我們可以在XML中實現,也可以在代碼中實現。



    
    
    
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
rocketAnimation.start();
動畫的啟動是調用start()方法,注意這個方法的調用不能在onCreate()中,因為此時動畫資源並沒有完全加載到窗口,比較好的方法是放置在onWindowFocusChanged()中。


(2)Tween Animation——對一張圖片實現的動畫,比如縮放。

查看源碼,我們就不難理解補間動畫的定義和它的動畫效果的實現方式。比如對其中的ScaleAnimation而言,縮放的效果是通過Matrix矩陣變換實現的,本質上來說,都是動態的對位圖實行變換操作。這也就是為什麼補間動畫只有四種——AlphaAnimation,ScaleAnimation,TranslateAnimation和RotateAnimation,因為一張圖片的矩陣變換也就此四種。


Animation抽象類是這四個類的基類,我們也可以模仿他們通過矩陣變換或其它操作位圖的方式實現自己的補間動畫,比如組合其中兩種同時變化。


補間動畫的基本使用格式如下:

這裡我們只介紹XML格式。

首先,它的XML文件往往是作為一種單獨的動畫資源文件保存在res/anim/文件夾下的,也就是說,這個文件夾下對應的資源文件的對象都是Animation類的對象(理解多態和XML文件表示的也是類對象)



    float"
        android:toAlpha="float" />
    
    float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    
    
        ...
    
這裡涉及到的一些屬性資源的含義和使用方法都可以通過API查到,這裡不作介紹。唯一可能有點難度的是interpolator這個屬性,我們後面再做介紹。

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);
在代碼中通過調用AnimationUtils.loadAnimation()裝載這個動畫資源,然後調用startAnimation啟動動畫。


Property Animation

View Animation針對的使用對象都是View,而Property Animation針對的使用對象則是所有對象,明白了這一點就知道了二者的差別。

這裡我們先不探討它的實現原理,而只是作一個總結性的了解它的使用。

屬性動畫的基類是Animator.java,在XML中,它也是一種動畫資源。與視圖動畫相區別,它的xml文件保存在res/animator/文件夾中:


    
        
        
    
    
這裡使用的對象節點就是具體的Animator子類對象名稱。

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.anim.property_animator);
set.setTarget(myObject);
set.start();
上面的調用是啟動屬性動畫的方法。


上面就簡單總結了視圖動畫和屬性動畫的定義和使用方法,其中視圖動畫的使用對象針對的是View視圖,屬性對話的使用對象則是所有Object。

視圖動畫又分為兩種,其一是桢動畫,它可以當作一個完全的Drawable資源實現;其二是補間動畫,它是通過矩陣變化等方法操作位圖實現的,因此補間動畫也是針對單一位圖的動畫。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved