View体系之属性动画

Posted adressian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了View体系之属性动画相关的知识,希望对你有一定的参考价值。

(内容省略了valueAnimator和PropertyValueHolder使用)

属性动画的使用的主要方式是AnimatorSet和ObjectAnimator配合使用.ObjectAnimator控制一个对象和一个属性,多个ObjectAnimator组合到AnimatorSet可以实现丰富的动画效果.

 

一.ObjectAnimator单独使用

ObjectAnimator mobjectAnimator=ObjectAnimator.ofFloat(view,"translationX",200);
                mobjectAnimator.setDuration(300);
                mobjectAnimator.start();

除了设置时长以外,还可以设置插值器.其可以常用的直接使用的属性动画属性值有:

translationX,translationY//平移

rotation,rotationX,rotationX//旋转

PrivotX,PrivotY//支点

alpha//透明度

x,y//View最终位置

 

二.监听动画过程

mobjectAnimator.addListener(new Animator.AnimatorListener() {
                    @Override
                    public void onAnimationStart(Animator animation) {
                    }

                    @Override
                    public void onAnimationEnd(Animator animation) {

                    }

                    @Override
                    public void onAnimationCancel(Animator animation) {

                    }

                    @Override
                    public void onAnimationRepeat(Animator animation) {

                    }
                });

 

三.组合动画

AnimatorSet使用play(Animator anim)传入动画

并且通过以下方法插入新动画:

  after(Animator anim)

  after(long delay)//延迟指定毫秒后执行

  with(Animator anim)

  before(Animator anim)

 

                ObjectAnimator Animator1 = ObjectAnimator.ofFloat(view, "translationX", 200);
                ObjectAnimator Animator2 = ObjectAnimator.ofFloat(view, "ScaleX", 1.0f, 2.0f);
                ObjectAnimator Animator3 = ObjectAnimator.ofFloat(view, "rotationX", 0.0f, 90.0f);
                AnimatorSet set=new AnimatorSet();
                set.setDuration(2000);
                set.play(Animator1).with(Animator2).after(Animator3);
                set.start();

 

以上是关于View体系之属性动画的主要内容,如果未能解决你的问题,请参考以下文章

Android动画之ViewPropertyAnimator(专用于view的属性动画)

Android View体系从源代码解析View的layout和draw流程

Android之动画

04.Android之动画问题

Android属性动画之旋转动画

Android动画之View Animation--alphatranslatescalerotate