Android中属性动画和补间动画的区别

本文介绍了Android属性动画与补间动画的区别,重点讲解了属性动画中的ObjectAnimator、ValueAnimator、AnimatorSet的使用,并通过示例代码说明如何实现动画效果。还提及了属性动画中的监听器,用于监听动画的start、Repeat、End、Cancel事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录


前言

Android属性动画和补间动画,既是日常工作中经常接触到的技术,也是面试常考的问题。
这篇博客主要是为了介绍Android的属性动画使用,同时带着大家总结一下关于面试过程中常被面试到的动画问题。

关于补间动画,可以参考之前的博客:Android动画学习——Tween Animation


为什么引入属性动画

Android3.0之前提供的补间动画机制还算相对比较健全的,比如你的需求中只需要对View进行移动、缩放、旋转和淡入淡出的操作,那么补间动画已经足够健全了。但是,如果一旦需求超出了这四种操作,补间动画就无能为力了。
例如,我们需要改变View的宽度,这个时候就不能通过补间动画实现。此外,补间动画还有一个最大的缺陷,就是它只是改变了View的显示效果而已,并不会真正的改变View的属性。具体来说,例如屏幕左上角有一个Button,使用补间动画将其移动到右下角,此刻你去点击右下角的Button,它是绝对不会响应点击事件的,因此其作用区域依然还在左上角。只不过是补间动画将其绘制在右下角而已。


属性动画


ObjectAnimator

ObjectAnimator是属性动画框架中最重要的实现类,创建一个ObjectAnimator只需要通过它的静态工厂类直接返回一个ObjectAnimator对象。参数包括一个对象和对象的属性名字,但这个属性必须有get和set函数,内部会通过Java反射机制来调用set函数修改对象的属性值。

我们举一个例子,在5秒内,让一个ImageView平移一段距离,代码如下:

private void startAnimator() {
    ObjectAnimator animator = ObjectAnimator.ofFloat(mImageView, "translationY", 300);
    animator.setDuration(5000);
    animator.start();
}

通过ObjectAnimator的静态工厂方法,创建一个ObjectAnimator对象。第一个参数是需要操纵的View,第二个参数则是需要操纵的属性,而最后一个参数是一个可变数组参数,需要传进去该属性变化的一个取值过程,这里只设置了一个参数,即变化到300。

在使用ObjectAnimator的时候,有一点非常重要,那就是要操纵的属性必须具有get、set方法,不然ObjectAnimator就无法生效。下面列举出一些可以直接使用的属性:

  • translationX、translationY:这两个属性作为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值