Android动画专题之属性动画

来源:互联网 发布:不用网络的小说软件 编辑:程序博客网 时间:2024/05/24 02:50

专题介绍:专题准备

专题一:Android动画专题之逐帧动画

专题二:Android动画专题之补间动画


终于写到了最后的主角,前面的动画虽然也有效果,但是都有着自己的局限性。而今天就是强大的主角到来了!!!


正文开始

还是先来看看官网是如何介绍的(官网点击此处)


很长的一段介绍,但我们需要记住这个特征就好——可以对任何对象执行属性动画,可以定义任何属性的变化

下面还介绍了我们在使用属性动画时应该定义的特性:

  • Duration:这个应该很熟悉了,就是之前tweened animation中用到的动画持续时间。默认值是300ms。
  • interpolation:这个词有的翻译成了加速器,又得说叫插值,我是直接记单词了,跟在使用tweened animation一样。
  • 重复次数和行为:可以用来定义动画结束后是否重复(重复几次)和结束后的行为(从结束的那一帧开始倒着播放到第一帧还是怎样)
  • 动画集合:使用一组属性动画,可以顺序播放,同时播放。
  • 帧刷新频率:定义动画的帧多久刷新一次,默认是10ms。

 

介绍属性动画不可避免的要介绍下Animator这个框架,它就是3.0后推出的新的动画框架。可以简单的看下这个官网的介绍:


相关API介绍

Animators

  • ValueAnimator:时间引擎,计算属性动画的值。使用它计算并监听值更新来更新相关对象的属性值。
  • ObjectAnimator:属性动画中经常使用的一个类,它是ValueAnimator的子类。使用它对指定对象的属性执行动画。
  • AnimatorSet:组合多个Animator,指定多个Animator的播放顺序。

Evaluators控制属性动画如何计算属性值。

Evaluators

  • IntEvaluator:计算int类型的属性值
  • FloatEvaluator:计算float类型的属性值
  • ArgbEvaluator:计算十六进制形式的颜色值
  • TypeEvaluator:实现该接口来自定义Evaluator。


介绍完了属性动画的知识,下面请看属性动画使用时的关键代码。

1.使用ValueAnimator

//ValueAnimator的使用        ValueAnimator animator = ValueAnimator.ofFloat(0,100);        animator.setTarget(view);        animator.setDuration(1000).start();        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator valueAnimator) {                //监听数值的变化,进而完成动画的变换            }        });

注:动画的监听有着开始(start)、重复(Repeat)、结束(End)、和取消(Cancel)等几个过程,不过我们一般都只需要End过程:



            //fadeAnim是一个ObjectAnimator对象            fadeAnim.addListener(new AnimatorListenerAdapter() {                @Override                public void onAnimationEnd(Animator animation) {                    super.onAnimationEnd(animation);                    //TODO 动画结束时需要做的处理                }            });

2.使用ObjectAnimator动画

创建一个ObjectAnimator通过它的静态工厂类直接返回一个ObjectAnimator对象。参数包括对象和对象的属性名。要求属性必须有get和set函数。


        //令一个button从不透明到透明        ObjectAnimator animator = ObjectAnimator.ofFloat(button,"alpha",1,0);        animator.setDuration(2000);        animator.start();

3.在XML中使用属性动画

在res目录下新建一个animator文件夹,在里面创建属性动画

    <objectAnimator        android:duration="2000"        android:propertyName="alpha"        android:valueFrom="1.0"        android:valueTo="0.0">    </objectAnimator>

程序中使用XML定义的动画

Animator anim = AnimatorInflater.loadAnimator(this,R.animator.alpha_property);anim.setTarget(myObject);anim.start();





0 0
原创粉丝点击