Android属性动画(Property Animation)

本文详细介绍了Android中的Property Animation,包括其基本概念、相关API及如何使用ObjectAnimator实现各种动画效果,如缩放、平移、旋转和透明度变化,并展示了如何组合多个动画。

1、概述

        Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有一个颜色的切换动画;你希望可以使用3D旋转动画;你希望当动画停止时,View的位置就是当前的位置;这些View Animation都无法做到。这就是Property Animation产生的原因,本篇博客详细介绍Property Animation的用法。至于Drawable Animation,嗯,略~

2、相关API

Property Animation故名思议就是通过动画的方式改变对象的属性了,我们首先需要了解几个属性:

Duration动画的持续时间,默认300ms。

Time interpolation:时间差值,乍一看不知道是什么,但是我说LinearInterpolator、AccelerateDecelerateInterpolator,大家一定知道是干嘛的了,定义动画的变化率。

Repeat count and behavior:重复次数、以及重复模式;可以定义重复多少次;重复时从头开始,还是反向。

Animator sets: 动画集合,你可以定义一组动画,一起执行或者顺序执行。

Frame refresh delay:帧刷新延迟,对于你的动画,多久刷新一次帧;默认为10ms,但最终依赖系统的当前状态;基本不用管。

相关的类

ObjectAnimator  动画的执行类,后面详细介绍

ValueAnimator 动画的执行类,后面详细介绍 

AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等。

AnimatorInflater 用户加载属性动画的xml文件

TypeEvaluator  类型估值,主要用于设置动画操作属性的值。

TimeInterpolator 时间插值,上面已经介绍。

总的来说,属性动画就是,动画的执行类来设置动画操作的对象的属性、持续时间,开始和结束的属性值,时间差值等,然后系统会根据设置的参数动态的变化对象的属性。

1、概述

        Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有一个颜色的切换动画;你希望可以使用3D旋转动画;你希望当动画停止时,View的位置就是当前的位置;这些View Animation都无法做到。这就是Property Animation产生的原因,本篇博客详细介绍Property Animation的用法。至于Drawable Animation,嗯,略~

2、相关API

Property Animation故名思议就是通过动画的方式改变对象的属性了,我们首先需要了解几个属性:

Duration动画的持续时间,默认300ms。

Time interpolation:时间差值,乍一看不知道是什么,但是我说LinearInterpolator、AccelerateDecelerateInterpolator,大家一定知道是干嘛的了,定义动画的变化率。

Repeat count and behavior:重复次数、以及重复模式;可以定义重复多少次;重复时从头开始,还是反向。

Animator sets: 动画集合,你可以定义一组动画,一起执行或者顺序执行。

Frame refresh delay:帧刷新延迟,对于你的动画,多久刷新一次帧;默认为10ms,但最终依赖系统的当前状态;基本不用管。

相关的类

ObjectAnimator  动画的执行类,后面详细介绍

ValueAnimator 动画的执行类,后面详细介绍 

AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等。

AnimatorInflater 用户加载属性动画的xml文件

TypeEvaluator  类型估值,主要用于设置动画操作属性的值。

TimeInterpolator 时间插值,上面已经介绍。

总的来说,属性动画就是,动画的执行类来设置动画操作的对象的属性、持续时间,开始和结束的属性值,时间差值等,然后系统会根据设置的参数动态的变化对象的属性。

3、ObjectAnimation的实现

3.1属性动画

private void suofang() {
    //缩放
    ObjectAnimator animator4 = ObjectAnimator.ofFloat(textView, "scaleX", 1f, 3f, 1f);
    animator4.setDuration(2000);
    animator4.start();
}

private void pingyiYzhou() {
    //Y轴平移
    ObjectAnimator animator3 = ObjectAnimator.ofFloat(textView, "translationY", 0f, 350f, 0f);
    animator3.setDuration(2000);
    animator3.start();
}

private void xuanzhuan() {
    //旋转
    ObjectAnimator animator1 = ObjectAnimator.ofFloat(textView, "rotation", 0f, 360f, 0f);
    animator1.setDuration(2000);
    animator1.start();
}

//渐变
private void jianbian() {
    ObjectAnimator animator = ObjectAnimator.ofFloat(textView, "alpha", 1f, 0f, 1f);
    animator.setDuration(2000);
    animator.start();
}
缩放的实现(参数一:表明要执行动画的控件,参数二:表明要执行的动画类型,参数三----参数N:表明动画执行的轨迹)

3.2组合动画

//组合  边平移边旋转边渐变
private void setAnim() {
    ObjectAnimator animator1 = ObjectAnimator.ofFloat(textView, "translationY", 0f, 350f, 0f);
    ObjectAnimator animator2 = ObjectAnimator.ofFloat(textView, "rotation", 0f, 360f, 0f);
    ObjectAnimator animator3 = ObjectAnimator.ofFloat(textView, "alpha", 1f, 0f, 1f);
    AnimatorSet animatorSet = new AnimatorSet();
    animatorSet.play(animator1).with(animator2).with(animator3);
    animatorSet.setDuration(3000);
    animatorSet.start();
}
组合动画用到AnimationorSet来存需要执行的动画,用play设置执行的顺序,with同时,after之后执行。

Duration执行时间  start开始执行。

    MainActivity中

     button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //渐变
//                jianbian();
                //旋转
//                xuanzhuan();
                //Y轴平移
//                pingyiYzhou();
                //缩放
//                suofang();
                //组合  边平移边旋转边渐变
                setAnim();
    }
调取相应的方法即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值