属性动画

来源:互联网 发布:淘宝4星怎么贷款 编辑:程序博客网 时间:2024/06/05 04:53
translationX 与 X 区别
第一个是偏移量
第二个是结果

ObjectAnimator
    实现Animator框架功能
    属性动画常用属性
    动画的监听
1 多个属性动画是异步执行的,但是多个动画执行不建议直接使用
2 方式1:建造多个propertyValueHolder,然后通过ObjectAnimator.ofPropertyValueHolder,全部传进去
3 方式2:通过AnimatorSet set.playTogether()
             AnimatorSet可以控制动画执行的顺序————before after with(同时)
         顺序执行方法 set.playSequentially();

动画监听:
可以通过Animator.addListener实现
如果不想重写所有方法,可以通过设置监听适配器addLIstenerAdapter,复写你需要的那个方法
动画效果可以通过设置差值器intercepter,ObjectAnimator.addIntercepter(new BounceIntercepter()),效果为小球落地以后回弹的效果


ValueAnimator
虽然无法直接作用于对象
不过通过这个对象可以获取到动画变化过程中的数值

总结:
常用属性:
translationX/Y
rotation、rotationX/Y
scaleX/scaleY
X/Y
alpha

常用方法 类:
ValueAnimator
ObjectAnimator

AnimatorUpdate 动画监听类
AnimatorListenerAdapter 动画监听类

PropertyValuesHolder 同时执行多个动画
AnimatorSet 同时执行多个动画

TypeEvaluators 数值计算器
Interpolators 差值器 ——加速度变化——(加速、线性变化、减速、到达终点会弹一下)



    private Animator createAnimatorForView(final View view) {
        final ViewGroup.LayoutParams lp = view.getLayoutParams();
        final int originalHeight = view.getHeight();

        ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 0);
        animator.addListener(new AnimatorListener() {

            @Override
            public void onAnimationStart(Animator arg0) {
            }

            @Override
            public void onAnimationRepeat(Animator arg0) {
            }

            @Override
            public void onAnimationEnd(Animator arg0) {
                lp.height = 0;
                view.setLayoutParams(lp);
            }

            @Override
            public void onAnimationCancel(Animator arg0) {
            }
        });

        animator.addUpdateListener(new AnimatorUpdateListener() {

            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                lp.height = (Integer) valueAnimator.getAnimatedValue();
                view.setLayoutParams(lp);
            }
        });

        return animator;
    }
0 0
原创粉丝点击