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();