1、屬性值
rotationX,rotationY,scaleX,scaleY,translationX,translationY,alpha.
2、基本用法
//旋轉動畫
ObjectAnimator.ofFloat(button, "rotationX", 0f, 360f).setDuration(2000).start();
//平移動畫
ObjectAnimator.ofFloat(button_2, "translationX", 0, 100).setDuration(2000).start();
3、動畫集合使用
ObjectAnimator animator1 = ObjectAnimator.XXX();
ObjectAnimator animator2 = ObjectAnimator.XXX();
ObjectAnimator animator3 = ObjectAnimator.XXX();
AnimatorSet set = new AnimatorSet();
set.setDuration(1000);
set.playTogether(animator1,animator2,animator3);
set.start()
playTogether傳入的是一個可變參數。
4、動畫集合實現2
PropertyValuesHolder alpha = PropertyValuesHolder.ofXXX();
PropertyValuesHolder scaleX = PropertyValuesHolder.ofXXX();
PropertyValuesHolder scaleY = PropertyValuesHolder.ofXXX();
ObjectAnimator.ofPropertyValuesHolder(alpha,scaleX,scaleY).setDuration(1000).start()
5、動畫監聽
//傳入的屬性名字可以是未知的,它只會計算出一個合適的值進行回調
ObjectAnimator animator = ObjectAnimator.ofXXX().setDuration();
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override public void onAnimationUpdate(ValueAnimator animation) { Object animatedFraction = animation.getAnimatedFraction() Object animatedValue =animation.getAnimatedValue()
});
animator.start()
動畫監聽獲取到的值是Object類型,需要強轉爲自己需要的類型。
6、ValueAnimator使用
ValueAnimator只是計算,並不會作用在任何控件上,
//簡單自由落體動畫
ValueAnimator valueAnimator = ValueAnimator.ofXXX();
valueAnimator.setTarget(v);
valueAnimator.setDuration();
valueAnimator.setInterpolator(BounceInterpolator());
valueAnimator.start();
valueAnimator.addUpdateListener(ValueAnimator.AnimatorUpdateListener() {
(ValueAnimator animation) {
float animatedValue = (float)animation.getAnimatedValue()
//view.setTranslationY(animatedValue)將計算的值作用在View上
})