android基礎知識35:Interpolator

來源:互聯網
上載者:User

做了些動畫,發現動畫都有一個Interpolator的屬性,它到底是個啥東西?

  網上也有很多解釋Interpolator的文章,基本上都是停留在直接翻譯SDK的意思層面上。看了,也就明白一個大概。

  Interpolator英文意思是: 篡改者; 分類機; 校對機

  SDK對Interpolator的描述是:An interpolator defines the rate of change of an animation. This allows the basic animation effects (alpha, scale, translate, rotate) to be accelerated, decelerated, repeated, etc。簡而言之Interpolator就是一個“變動率”,一個基本動畫的“變動率”。

 比如:從A到B的一個平移動畫,移動,當然後速度的快慢,那麼從A到B可以是勻速、勻加速、勻減速、變速完成這段距離。假設距離為S,時間為t,速度為v,都知道S=v*t。
這個Interpolator在這裡就是一個速度控制器,控制速度變化。先給一個對Interpolator的大概理解,接下來站在程式員的角度來認識Interpolator。
  Interpolator借口只有一個抽象方法getInterpolation(float input),由此SDK中擴充了另外幾個常用Interpolator類,分別是:
    ——AccelerateInterpolator:動畫從開始到結束,變動率是一個加速的過程。
    ——DecelerateInterpolator:動畫從開始到結束,變動率是一個減速的過程。
    ——CycleInterpolator:動畫從開始到結束,變動率是迴圈給定次數的正弦曲線。
    ——AccelerateDecelerateInterpolator:動畫從開始到結束,變動率是先加速後減速的過程。
    ——LinearInterpolator:動畫從開始到結束,變動率是線性變化。
    ..............
這裡給一個簡單的實現Interpolator介面的類:

import android.view.animation.Interpolator;public class MyInterpolator implements Interpolator {private float mFactor;private int i;public MyInterpolator(int i){this.i = i;}@Overridepublic float getInterpolation(float input) {switch(i){case 1:mFactor = input;break;case 2:mFactor = input*input*input;break;}return mFactor; }}

當初始變數為1的時候,mFactor = input,是一個線性函數,“變動率”是勻速的當初始變數為2的時候,mFactor = input*input*input,是一個曲線函數,“變動率”呈三次方。
這裡需要注意的是,input是一個0.0f~1.0f的浮點類型

從上面看來,自訂一個Interpolator就是用input根據所需構造一個函數出來

比如:這裡把初始變數為2的時候,把函數改為:mFactor=3*input。這裡給出一個測試出來的

這兩個圖所做的動畫都是往下移動100的距離,時間都為3000ms.並且同時做。那為什麼綠色的花移動距離是紫色花移動距離的3倍呢?這裡來分析一下。

   都是以input為變數的一次線性函數,故兩者都是勻速運動,此時後者的速度是前者的3倍,所以移動距離也應該是3被。回過頭來看,在設定TranslateAniamtion的時候,明明是移動一樣的距離啊!這裡可以猜測這時設定的距離就不起效果了,也就是Interpolator改變了之前設定的距離。

   現在基本上明白了Interpolator到底是做什麼的了!

參考資料:

【轉】Android 動畫之Interpolator插入器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.