Android應用資源---動畫資源(Animation Resources)(一)

來源:互聯網
上載者:User

 有兩種類型的動畫資源:

屬性動畫

在設定的時間內,通過修改與Animator類相關的對象的屬性值來建立一個動畫。

視圖動畫

有兩種類型的視圖動畫架構

補間動畫(Tween animation):通過執行通過執行一系列的與Animation類相關的單一圖片的轉換來建立動畫。

幀動畫(Frame animation):通過顯示與AnimationDrawable類的順序相關的圖片序列來建立動畫。

屬性動畫

動畫被定義在要修改的目標對象屬性的XML中,如設定時間內的背景色或alpha值。

檔案位置(FILE LOCATION):

res/animator/filename.xml,檔案名稱被用作資源ID。

被編譯的資源類型(COMPILED RSOURCE DATATYPE):

資源要指向ValueAnimator、ObjectAnimator或AnimatorSet類型

資源引用(RESOURCE REFERENCE):

在Java代碼中:R.animation.filename

在XML檔案中:@[package:]animator/filename

文法(SYNTAX):

<set
  android:ordering=["together" | "sequentially"]>

    <objectAnimator
        android:propertyName="string"
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <set>
        ...
    </set>
</set>

這個檔案必須有一個單一的跟元素:既可以是<set>、<objectAnimator>也可以是<valueAnimator>。可以把動畫元素一起組織到<set>元素中,包括其他的<set>元素。

元素(ELEMENTS):

<set>

   能夠包含其他動畫元素的一個容器(<objectAnimator>、<valueAnimator>、或其他的<set>元素)。代表一個AnimatorSet對象。

   可以指定<set>嵌套標籤,把更多的動畫組織到一起。每個<set>能夠定義它自己的順序屬性。

屬性(ATTRIBUTES):

    android:ordering

關鍵屬性,它指定該集合中動畫的播放順序。

  

說明
sequentially 在本組集合中按順序播放動畫。
together(預設) 同一時間播放本組集合中的動畫
 


<objectAnimator>

    在特定的設定時間內一個對象的具體動畫屬性,代表了一個ObjectAnimator對象。

屬性(ATTRIBUTES):

    android:propertyName

       字串類型,必須的。通過這個名字來引用動畫的對象屬性。例如,可以給View對象指定“alpha”或“backgroundColor”屬性。ObjectAnimator元素沒有暴露target屬性,因此不能在XML聲明中把對象設定給動畫。必須通過調用loadAnimator()方法和setTarget()方法把動畫XML資源填充到包含這個屬性的目標對象中。

    android:valueTo

       浮點類型、整型、或顏色值,必須的。它是動畫屬性的結束值。顏色是用六個十六進位數表示(如#333333)。

    android:valueFrom

       浮點類型、整型、或顏色值,它是動畫屬性的開始值,如果沒有指定,那麼動畫會在用屬性的get方法擷取值的時刻開始。顏色是六位十六進位數表示(如#333333)。

    android:duration

       整數類型。以毫秒為單位,指定動畫時間,預設是300毫秒。

    android:startOffset

       整數類型。在start()方法被調用之後,動畫延遲的毫秒數。

    android:repeatCount

       整數類型。指定動畫的重複次數。設定為“-1”,說明要無限次重複,或指定一個正整數。如,設定為1,說明動畫第一次運行之後,還要重複一次,因此動畫要播放兩次。預設值是0,意味著不重複。

    android:repeatMode

       正整數。指定在動畫到達結尾時的行為方式。只有android:repeatCount被設定為正整數或“-1”時,這個屬性才有效果。如果設定為“reverse”,那麼每次重複時會逆向播放動畫,如果設定為“repeat”,那麼每次重複時,會從動畫的開頭來播放動畫。

    android:valueType

       關鍵屬性。如果值是顏色值,那麼不用指定這個屬性。動畫架構會自動處理顏色值。

  

說明
intType 指定動畫的值是整數
floatType(預設) 指定動畫的值是浮點數
 


<animator>

在設定時間內的動畫。代表了一個ValueAnimator對象。

屬性(ATTRIBUTES):

    android:valueTo

        浮點型、整型或顏色值,必須的。它是動畫結束的的值。顏色值用六位十六進位數來代表(如,#333333)

    android:valueFrom

        浮點型、整型或顏色值,必須的。它是動畫開始的值。顏色值用六位十六進位數來代表(如,#333333)

    android:duration

        整數。以毫秒為單位,指定動畫的播放時間。預設是300毫秒。

    android:startOffset

        整數。指定start()方法被調用後,動畫延遲的毫秒數。

    android:repeatCount

        整數。指定動畫的重複次數。如果設定為“-1”,則動畫會無限次重複,或者指定一個正整數。例如,設定為“1”,那麼動畫在初始運行一次之後,會再重複播放一次,因此動畫總共播放了兩次。它的預設值是0,這意味著動畫重複。

     android:repeatMode

        整數。它指定動畫到達結尾時重複的行為方式。android:repeatCount必須被設定為正整數或“-1”時,這個屬性才會有效果。如果設定為“reverse”,動畫在每次重播時,會逆向播放;如果設定為“repeat”,那麼動畫每次重播時,會重開始的位置播放。

     android:valueType

        關鍵屬性,如果值是顏色,則不用指定這個屬性。因為動畫架構會自動的處理顏色值

  

說明
intType 指定動畫的值是整數
floatType(預設) 指定動畫的值是浮點數
 


例子(EXAMPLE):

這個XML檔案被儲存在res/animator/property_animator.xml:

<set android:ordering="sequentially">
    <set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>
    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>
</set>

要運行這個動畫,就必須在代碼中把這個XML資源填充給一個AnimatorSet對象,然後在啟動這個動畫集之前,把目標對象設定個所有的動畫。調用setTarget方法可以方便的把一個單一對象設定給AnimatorSet對象的所有子物件。代碼如下:

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,    R.anim.property_animator);

set.setTarget(myObject);set.start();

 
摘自 FireOfStar的專欄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.