Android中Animation的Interpolator插值器詳解

轉自 點擊打開鏈接

Interpolator屬性是Animation類的一個XML屬性,所以alpha、scale、rotate、translate、set都會繼承得到這個屬性。Interpolator被譯爲插值器,他是一個指定動畫如何變化的屬性,
我們看下api,他的系統值:
這裏寫圖片描述

accelerate_decelerate_interpolator

描述:在動畫開始與介紹的地方速率改變比較慢,在中間的時候加速
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

accelerate_interpolator
描述:在動畫開始的地方速率改變比較慢,然後開始加速

這裏寫圖片描述
我們可以將其形象的形容下(默認下感覺和上面的有點像):
這裏寫圖片描述

anticipate_interpolator
描述: 開始的時候向後甩一點然後向前
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

anticipate_overshoot_interpolator
描述: 開始的時候向後甩一點然後向前超過設定值一點然後返回
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

bounce_interpolator
描述: 動畫結束的時候彈起,類似皮球落地
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

cycle_interpolator
描述:動畫循環播放特定的次數回到原點,速率改變沿着正弦曲線
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

decelerate_interpolator
描述: 在動畫開始的地方快然後慢
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

linear_interpolator
描述:以常量速率改變
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

overshoot_interpolator
描述:向前超過設定值一點然後返回
這裏寫圖片描述
我們可以將其形象的形容下:
這裏寫圖片描述

到這裏他的所有屬性都介紹完了,這個屬性不光對translate有用,對其他繼承至Animation的alpha、scale、rotate、translate、set都有作用效果,如果你想看到alpha、scale、rotate、set的作用效果可以至另一位博主的博文,有詳細的演示(傳送門

這篇博文難道就這樣結束了嗎?在我們平時沒有設置Interpolator屬性,那它的默認值是多少呢?我們不禁想到!很多人可能會以爲是linear_interpolator那是不是呢?
我們找到animation.setInterpolator();

 public void setInterpolator(Context context, @InterpolatorRes int resID) {
        setInterpolator(AnimationUtils.loadInterpolator(context, resID));
    }

它調用了另一個方法()

   public void setInterpolator(Interpolator i) {
        mInterpolator = i;
    }

我們再找下設置它默認值的地方

  protected void ensureInterpolator() {
        if (mInterpolator == null) {
            mInterpolator = new AccelerateDecelerateInterpolator();
        }
    }

是的找到了,它的默認值是accelerate_decelerate_interpolator

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章