Animation類相關屬性:
android:duration 動畫持續時間,以毫秒爲單位
android:fillAfter 如果設置爲true,控件動畫結束時,將保持動畫最後時的狀態
android:fillBefore 如果設置爲true,控件動畫結束時,將還原動畫開始時的狀態
android:fillEnabled 與fillBefore效果相同,都是在動畫結束時,將控件還原到初始化狀態
android:repeatCount 動畫重複次數 負數表示無限循環
android:repeatMode 重複類型,有reverse和restart兩個值,reverse表示倒序回放,restart表示重新播放一遍,必須與repeatCount一起使用才能看到效果。因爲這裏的意義 是重複的類型,即回放時的動作
android:interpolator 設置插值器,其實就是制定的動作效果。
scale 漸變尺寸伸縮動畫效果
alpha 漸變透明度動畫效果
translate 畫面轉換位置移動動畫效果
rotate 畫面轉移旋轉動畫效果
動畫的xml文件應該放在res/anim目錄下
scale標籤---調節尺寸
android:fromXScale 起始的X方向上相對自身的縮放比例,浮點值,比如1.0代表自身無變化,0.5代表起始時縮小一倍,2.0代表放大一倍
android:toXSxale 結尾的X方向上相對自身的縮放比例,浮點值
android:fromYScale 起始的Y方向上相對自身的縮放比例,浮點值
android:toYScale 結尾的Y方向上相對自身的縮放比例,浮點值
android:pivotX 縮放起點X軸座標,可以是數值、百分比、百分數p三種樣式,比如50、50%、50%p,當爲數值時,表示當前view的左上角,即原點處加上50px,做爲起始縮放點;如果爲50%,表示在當前控件的左上角加上自己寬度的50%做爲起始點;如果是50%p,那麼就是表示在當前的左上角加上父控件寬度的50%做爲起始點x軸座標
android:pivotY 縮放起點Y軸的座標,取值及意義跟android:pivotX一樣
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50"
android:pivotY="50"
android:duration="700" />
alpha標籤---調節透明度
android:fromAlpha動畫開始的透明度,從0.0 - 1.0,0.0表示全透明,1.0表示完全不透明
android:toAlpha動畫結束時的透明度,也是從0.0 - 1.0,0.0表示全透明,1.0表示完全不透明
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:duration="3000"
android:fillBefore="true">
</alpha>
rotate標籤---旋轉
android:fromDegrees 開始旋轉的角度位置,正值代表順時針方向度數,負值代表逆時針方向度數
android:toDegrees 結束時旋轉到的角度位置,正值代表順時針方向度數,負值代表逆時針方向度數
android:pivotX 縮放起點X軸座標,可以是數值、百分數、百分數p三種樣式,比如50,50%,50%p等,意義和scale標籤時講的一樣
android:pivotY 縮放起點Y軸座標,可以是數值、百分數、百分數p三種樣式,比如50,50%,50%p等,意義和scale標籤時講的一樣
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="-650"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
android:fillAfter="true">
</rotate>
translate標籤---平移
android:fromXDelta 起始點X軸座標,可以是數值、百分數、百分數p三種樣式
android:fromYDelta 起始點Y軸座標,可以是數值、百分數、百分數p三種樣式
android:toXDelta 結束點X軸座標
android:toYDelta 結束點Y軸座標
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-80"
android:fromYDelta="0"
android:toYDelta="-80"
android:duration="2000"
android:fillBefore="true">
</translate>
set標籤---定義動畫合集
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:fillAfter="true">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
<scale
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"/>
<rotate
android:fromDegrees="0"
android:toDegrees="720"
android:pivotX="50%"
android:pivotY="50%"/>
</set>
代碼中使用:
ScaleAnimation scaleAnimation= AnimationUtils.loadAnimation(this,R.anim.scaleanim);
tv.startAnimation(scaleAnimation);
插值器:
- AccelerateDecelerateInterpolator 在動畫開始與介紹的地方速率改變比較慢,在中間的時候加速
- AccelerateInterpolator 在動畫開始的地方速率改變比較慢,然後開始加速
- AnticipateInterpolator 開始的時候向後然後向前甩
- AnticipateOvershootInterpolator 開始的時候向後然後向前甩一定值後返回最後的值
- BounceInterpolator 動畫結束的時候彈起
- CycleInterpolator 動畫循環播放特定的次數,速率改變沿着正弦曲線
- DecelerateInterpolator 在動畫開始的地方快然後慢
- LinearInterpolator 以常量速率改變
- OvershootInterpolator 向前甩一定值後再回到原來位置