属性动画二--ValueAnimator

来源:互联网 发布:软件编程有哪些大学 编辑:程序博客网 时间:2024/05/21 22:25

查看ObjectAnimator的源码,会发现其实是继承自ValueAnimator,是ValueAnimator的一个封装。

ValueAnimator本身并不响应动画,也不能控制属性,它是一个数值发生器,产生动画过程中的各种数值,

将这些数值作用于控件属性,使整个动画过程能够精确地完成

下面这个小例子中,ValueAnimator 使int的数值在5000ms中由0变化到100,并且我们设置了数值变化的监听事件

每次数值变化的时候我们都在button上打印输出,注意,在没有设置插值器的时候,这里的int是均匀变化的

ValueAnimator animator=ValueAnimator.ofInt(0,100);animator.setDuration(5000);animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {    @Override    public void onAnimationUpdate(ValueAnimator animation) {        Integer value= (Integer) animation.getAnimatedValue();        button.setText(""+value);    }});animator.start();


我们也可以调用ValueAnimator.ofObject()方法实现自定义的数值生成器
 ValueAnimator animator=ValueAnimator.ofObject(new TypeEvaluator() {     @Override     /**      *fraction是一个 0-1 的时间因子,结合startValue和endValue以及各种计算方式(如各种插值器)      * 就可以生成各种各样的想要的数值序列      */     public Object evaluate(float fraction, Object startValue, Object endValue) {         return null;     } }); animator.start();

以上内容 整理自慕课网


0 0
原创粉丝点击