補間動畫 、插值器

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                      向前甩一定值後再回到原來位置





發佈了30 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章