android那些事--屬性動畫01-ValueAnimator(數值產生器)

寫代碼尷尬的是類太多不知道應該使用哪一個,正確的說是不知道某個類是做什么的.所以比較喜歡從源頭看一下,有個大致了解.

屬性動畫需要了解的

這里寫圖片描述

補間動畫需要了解的
這里寫圖片描述

屬性動畫與3.0之前的一個對比

因為主要是為了了解使用屬性動畫,所以統一將幀動畫和補間動畫成為3.0之前

  • 3.0之前的動畫是相對健全的,因為只能滿足透明度,旋轉,移動,縮放等行為.
  • 3.0之前的動畫是只能夠作用在view上的,文檔是這么寫的Abstraction for an Animation that can be applied to Views, Surfaces, or other objects.一個抽象的類被作用于view,surfaces,或者其他類上.
  • 另外補間動畫還有一個致命的缺點,就是只改變了view的顯示效果,而不會真的去改變view的屬性.

屬性動畫的使用

學習使用屬性動畫需要知道這么三個類ValueAnimator,ObjectAnimator,AnimatorSet.上面展示了這三者的關系.

在使用前有必要對屬性動畫的機制進行一個了解,然后再看如何使用最后在回顧一下這個機制,那屬性動畫就可以掌握了.
屬性動畫的運行機制是不斷通過對值進行操作來實現的,即對初始值和結束值進行設置,這之間的就由ValueAnimator來完成.

ValueAnimator的使用

    private void initAnimator() {
        ValueAnimator animator=ValueAnimator.ofFloat(0f,1f);
        animator.setDuration(3000);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                LogUtil.i(animation.getAnimatedValue());
            }
        });
        animator.start();
    }

上面這段代碼就是展示了從0到1在3秒內數值的一個變化進度.
首先使用它的靜態工廠類返回一個對象,同時設置參數0,1這兩個值就是屬性動畫機制里的起始和中指指.如果只傳一個參數的話代表起始和終止值相同.同樣也可以傳遞多個值,因為這個方法是一個可變參數數組的形式.


這里寫圖片描述

打印結果如下,內容太長就只截取了開始和結尾.


這里寫圖片描述

這里寫圖片描述

同樣如果你需要的是整數的過度變化,那么就調用下面這個方法.

ValueAnimator animator=ValueAnimator.ofInt(0,1);

基礎的就是這樣,我們還需要知道它的其它的一些方法.

  • cancel() 取消當前動畫
  • getDuration() 獲取這個動畫的執行時間
  • getRepeatMode() 獲取重復模式
  • getRepeatCount() 獲取重復次數
  • getStartDelay() 獲取延遲開始時間
  • setDuration(long duration) 設置動畫之行時間
  • setRepeatCount(int value)
  • setRepeatMode(int value)
  • start()

在設置動畫的重復模式的時候有這么三個模式可以設置,也是該類中的常量值

  • INFINITE 無窮盡的一直執行
  • RESTART 重頭開始再次執行
  • REVERSE 從結束開始向開始返回去執行

上面就是ValueAnimator的簡單介紹.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容