ObjectAnimator的propertyName使用

2018-04-16  本文已影响463人  奋斗小青年Jerome

相比ValueAnimator类,ObjectAnimator更加实用,因为它真正可以作用在一个对象上。不过ObjectAnimator是继承自ValueAnimator的,所以主体方法还是ValueAnimator里实现的。
在使用ObjectAnimator的时候,常用的有ofFloat(),ofInt(),ofObject(),ofArgb(),ofPropertyValuesHolder().
这里主要记录一下,ObjectAnimator的propertyName,因为平时使用的时候,只针对以下这些常见一些属性进行动画,而没有自定义属性

//1、透明度:alpha  
public void setAlpha(float alpha)  

//2、旋转度数:rotation、rotationX、rotationY  
public void setRotation(float rotation)  
public void setRotationX(float rotationX)  
public void setRotationY(float rotationY)  

//3、平移:translationX、translationY  
public void setTranslationX(float translationX)   
public void setTranslationY(float translationY)  

//缩放:scaleX、scaleY  
public void setScaleX(float scaleX)  
public void setScaleY(float scaleY)  

查看了一下View里面常用的几个setXXX,可以看到在View中已经实现了有关alpha,rotaion,translate,scale相关的set方法。所以我们在构造ObjectAnimator时可以直接使用。
1、要使用ObjectAnimator来构造对画,要操作的控件中,必须存在对应的属性的set方法
2、setter 方法的命名必须以骆驼拼写法命名,即set后每个单词首字母大写,其余字母小写,即类似于setPropertyName所对应的属性为propertyName

反射拿到propertyName.png
 //设置水波纹半径
    public void setRippleRadius(float radius) {
        mRadius = radius;
        invalidate();
    }

    //设置水波纹 alpha 范围[0-255]
    public void setRippleAlpha(int alpha) {
        mAlpha = alpha;
        invalidate();
    }
        ObjectAnimator radiusAnimator = ObjectAnimator.ofFloat(this, "RippleRadius", 10, 50);
        radiusAnimator.setRepeatMode(ValueAnimator.RESTART);
        radiusAnimator.setRepeatCount(ValueAnimator.INFINITE);
        ObjectAnimator alphaAnimator = ObjectAnimator.ofInt(this, "RippleAlpha", 100, 0);
        alphaAnimator.setRepeatMode(ValueAnimator.RESTART);
        alphaAnimator.setRepeatCount(ValueAnimator.INFINITE);
        mAnimator = new AnimatorSet();
        mAnimator.playTogether(radiusAnimator, alphaAnimator);
        mAnimator.setDuration(1000);
        mAnimator.setInterpolator(new AccelerateInterpolator());
上一篇下一篇

猜你喜欢

热点阅读