傳統 View 動畫(Tween/Frame)

Tween 動畫

主要有 4 中:縮放、平移、漸變、旋轉
這裏寫圖片描述

1.1 set

一個持有其它動畫元素的容器 , , ,或者其它 元素

<?xml version="1.0" encoding="utf-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <alpha android:fromAlpha="0"
        android:toAlpha="1"
        android:duration="300"/>
  </set>

1.2 alpha

一個漸入漸出的動畫,對應的 java 類爲 AlphaAnimation。

屬性
android:fromAlpha
android:toAlpha
代表動畫開始和結束時透明度,0.0 表示完全透明,1.0 表示完全不透明,Float 值

1.3 scale

可以實現動態調控件尺寸的效果,通過設置 pivotX 和 pivotY 你可以指定 image 縮放的中心點,比如:如果這些值是 0,則表示左上角,所有的縮放變化將沿着右下角的軌跡運動。對應的類爲ScaleAnimation

屬性
android:fromXScale
android:toXScale
android:fromYScale
android:toYScale
Float 值,爲動畫起始到結束時,X、Y 座標上的伸縮尺寸
0.0 表示收縮到沒有
1.0 表示正常無伸縮

android:pivotX
android:pivotY
代表縮放的中軸點 X/Y 座標,浮點值
如果我們想表示中軸點爲圖像的中心,我們可以把兩個屬性值定義成 0.5 或者 50%。

1.4 translate

代表一個水平、垂直的位移。對應的類爲 TranslateAnimation.

屬性
android:fromXDelta 屬性代表起始 X 方向的位置
android:toXDelta
android:fromYDelta
android:toYDelta
代表動畫起始或者結束 X / Y 方向上的位置,Float 或者百分比值
浮點數 num%、num%p 分別相對於自身或者父控件
如果以浮點數字表示,是一個絕對值,代表相對自身原始位置的像素值;
如果以 num%表示,代表相對於自己的百分比,比如 toXDelta 定義爲 100%就表示在 X 方向上移動自己的 1 倍距離
如果以 num%p 表示,代表相對於父類組件的百分比。

1.5 rotate

是旋轉動畫,與之對應的 Java 類是 RotateAnimation

屬性

android:pivotX 屬性代表旋轉中心的 X 座標值
android:pivotY 屬性代表旋轉中心的 Y 座標值
Float 值或者百分比
這兩個屬性也有三種表示方式,但是 X 軸都是相對方向都是 Left,Y 軸都是相對於 Top
浮點數、num%、num%p;
數字方式代表相對於自身左邊緣的像素值,
num%方式代表相對於自身左邊緣或頂邊緣的百分比
num%p 方式代表相對於父容器的左邊緣或頂邊緣的百分比

android:fromDegrees
android:toDegrees
開始和結束時的弧度位置,單位是度,Float 值

1.6 java調用anim代碼

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

另外,在動畫中,如果我們添加了 android:fillAfter=”true”後,這個動畫執行完之後保持最後的狀態;

2 Frame 動畫

2.1 animation-list

必須作爲根元素,包含一個或者多個根元素
屬性:android:oneshot :true:只執行一次動畫,false:循環執行

2.2 item

一幀獨立動畫,必須是 的子元素

屬性
android:drawable
Drawable 資源,用於這一幀的圖片

android:duration
Integer 類型.該幀的時長,單位爲毫秒 milliseconds.

res/anim/rocket.xml:

<?xml version="1.0" encoding="utf-8"?>  
        <animation-list xmlns:android="http://schemas.android.com/apk/res/android"  
            android:oneshot="false">  
            <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />  
            <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />  
            <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />  
        </animation-list>

2.3 Java調用anim代碼

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);  
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);  
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();  
rocketAnimation.start();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章