檢視動畫

您可以使用視圖動畫系統,在「檢視區塊」上執行扭曲動畫。補間動畫 使用起點、終點、大小、旋轉以及 動畫的其他常見方面

補間動畫可以執行一系列簡單的轉換 (位置、大小、旋轉、 物件的內容。因此,如果有 TextView 物件,您可以移動、旋轉、放大或縮小文字。如果 背景圖片,背景圖片和文字都會經過轉換。animation package 會提供補間動畫中使用的所有類別。

動畫序列是以 XML 或 Android 程式碼。與定義版面配置一樣,建議採用 XML 檔案,因為這類檔案更容易閱讀。 與硬式編碼動畫相比,可重複使用及切換。在下方範例中,我們使用 XML。(收件者 如要進一步瞭解如何在應用程式程式碼中定義動畫,而非在 XML 中定義動畫,請參閱 AnimationSet 類別和其他 Animation 子類別)。

動畫指示會定義您想發生的轉換 以及需要多久時間轉換可以依序或同時進行 - 舉例來說,您可以讓 TextView 的內容從左到右移動,然後旋轉 180 度,或者同時移動和旋轉文字。每項轉換都會 該轉換專用的一組參數 (大小的開始和結束大小 改變、調整起始角度和結束角度等,還可以透過一組共同點 參數 (例如開始時間和時間長度)。為了進行多次轉換 同時指定相同的開始時間依序計算 加上前一個轉換的持續時間。

動畫 XML 檔案位於 Android 的 res/anim/ 目錄中 專案。檔案必須具備單一根元素:這可以是單一 <alpha><scale><translate><rotate>、內插器元素或 <set> 元素, 這些元素的群組 (可能包括另一個 <set>)。根據預設 系統會同時套用動畫指示。若要依序發生,您必須 指定 startOffset 屬性,如以下範例所示。

以下其中一個 ApiDemos 有 XML 可用以拉動,然後同時旋轉 旋轉 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),以及 這個數值會隨著你向下移動而增加

可將某些值 (如 眾多使用者) 指定為相對於物件本身或 父項。請務必根據需求使用適當的格式 (「50」代表 50% 的上層 或「50%」50% 相對於自身情況)。

您可以指派 Interpolator,決定轉換在一段時間內的套用方式。Android 提供多個內插器子類別 指定各種速度曲線:例如 AccelerateInterpolator 指示轉型,開始放慢速度並加快執行速度每個元素都有一個屬性值 套用於 XML 中

透過這個 XML,系統會將此 XML 儲存為 res/anim/ 中的 hyperspace_jump.xml 檔案目錄,下列程式碼會參照該專案,並從版面配置將其套用至 ImageView 物件。

Kotlin

AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation ->
    findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation)
}

Java

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

除了 startAnimation() 以外,您也可以定義 使用 Animation.setStartTime() 動畫,接著使用 View.setAnimation() 將動畫指派給檢視畫面。

如要進一步瞭解 XML 語法、可用標記和屬性,請參閱動畫資源

注意:無論動畫如何移動或調整大小, 容納動畫的檢視畫面邊界不會自動配合動畫調整。 即便如此,動畫仍會繪製在檢視畫面邊界外,不會遭到裁剪。 不過,如果動畫超過上層檢視畫面的邊界,就會「發生」剪輯