日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android属性动画 PropertyValuesHolder

發布時間:2024/9/30 Android 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android属性动画 PropertyValuesHolder 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/118961952
本文出自【趙彥軍的博客】

文章目錄

  • PropertyValuesHolder
  • PropertyValuesHolder 之 ofFloat()、ofInt()講解
  • 實戰-旋轉動畫
  • 實戰-組合動畫
  • 總結

PropertyValuesHolder

PropertyValuesHolder這個類的意義就是,它其中保存了動畫過程中所需要操作的屬性和對應的值。

我們通過ofFloat(Object target, String propertyName, float… values)構造的動畫,ofFloat()的內部實現其實就是將傳進來的參數封裝成 PropertyValuesHolder實例來保存動畫狀態。在封裝成 PropertyValuesHolder實例以后,后期的各種操作也是以PropertyValuesHolder為主的。

創建PropertyValuesHolder實例的函數:

public static PropertyValuesHolder ofFloat(String propertyName, float... values) public static PropertyValuesHolder ofInt(String propertyName, int... values) public static PropertyValuesHolder ofObject(String propertyName, TypeEvaluator evaluator,Object... values) public static PropertyValuesHolder ofKeyframe(String propertyName, Keyframe... values)

PropertyValuesHolder 之 ofFloat()、ofInt()講解

構造函數:

public static PropertyValuesHolder ofFloat(String propertyName, float... values) public static PropertyValuesHolder ofInt(String propertyName, int... values)

其中:

參數描述
propertyName:propertyName: 表示ObjectAnimator需要操作的屬性名。即ObjectAnimator 需要通過反射查找對應屬性的setProperty()函數的那個property
values:屬性所對應的參數,同樣是可變長參數,可以指定多個

而 ObjectAnimator 的 ofFloat 如下:

public static ObjectAnimator ofFloat(Object target, String propertyName, float... values);

可以看到在 ObjectAnimator.ofFloat中只比 PropertyValuesHolder 的 ofFloat多了一個target,其它都是完全一樣的!

將構造的PropertyValuesHolder實例設置進 ObjectAnimator:

public static ObjectAnimator ofPropertyValuesHolder(Object target,PropertyValuesHolder... values)

其中:

參數描述
target:指需要執行動畫的控件
values:是一個可變長參數,可以傳進去多個 PropertyValuesHolder 實例,由于每個 PropertyValuesHolder 實例都會針對一個屬性做動畫,所以如果傳進去多個 PropertyValuesHolder 實例,將會對控件的多個屬性同時做動畫操作。

實戰-旋轉動畫

我們先用 ObjectAnimator.ofFloat 做一個旋轉動畫

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f) rotation.duration = 3000 rotation.start()


下面我們再用 ObjectAnimator.ofPropertyValuesHolder 實現相同的功能。

val holder = PropertyValuesHolder.ofFloat("rotation", 0f, 360f) var rotation = ObjectAnimator.ofPropertyValuesHolder(myView, holder) rotation.duration = 3000 rotation.start()

運行起來,可以看到,效果是一樣的,效果圖我就不放了,你們可以自己試試。

我們再來試試組合動畫。

實戰-組合動畫

我們先用 AnimatorSet 做一個組合

var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f) var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 300f) var translationY = ObjectAnimator.ofFloat(myView, "translationY", 0f, 300f)val set = AnimatorSet() set.duration = 3000 set.playTogether(rotation, translationX, translationY) set.start()

我們把代碼運行起來,看看效果:


下面我們用 PropertyValuesHolder 實現一遍。

val rHolder = PropertyValuesHolder.ofFloat("rotation", 0f, 360f) val xHolder = PropertyValuesHolder.ofFloat("translationX", 0f, 300f) val yHolder = PropertyValuesHolder.ofFloat("translationY", 0f, 300f)var rotation = ObjectAnimator.ofPropertyValuesHolder(myView, rHolder, xHolder, yHolder) rotation.duration = 3000 rotation.start()

運行起來,看看效果是一樣的。

總結

AnimatorSet 是把多個子動畫組合起來,可以理解成把動畫做的更大,更復雜。

PropertyValuesHolder 是把一個動畫拆解成多個子模塊,可以理解成把動畫做的更小,更精細。

總結

以上是生活随笔為你收集整理的Android属性动画 PropertyValuesHolder的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。