Android --- ObjectAnimator 和 TranslateAnimation有什么区别

文章目录

  • [2. 作用范围和功能](#2. 作用范围和功能)
  • [2. 动画表现](#2. 动画表现)
  • [3. 是否修改 View 的属性](#3. 是否修改 View 的属性)
  • [4. 适用场景](#4. 适用场景)
  • [5. 性能](#5. 性能)
  • 总结:

ObjectAnimator 和 TranslateAnimation 都是 Android 中常用的动画类型,但它们有以下几个关键的区别:

2. 作用范围和功能

ObjectAnimator:

ObjectAnimator 是属性动画的一种,允许你对任何对象的任意属性进行动画处理。

它不仅可以作用于 View,也可以作用于其他对象。

它通过改变对象的属性值来执行动画,可以动画化几乎所有的属性(例如:translationX、translationY、rotation、alpha、scaleX 等)。

比如:可以使用 ObjectAnimator 动画化 View 的位置、透明度、旋转、缩放等属性。

示例:将 View 移动到屏幕的另一端(平移):

java 复制代码
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationX", 0f, 500f);
animator.setDuration(1000);  // 动画持续时间为1秒
animator.start();

TranslateAnimation:

TranslateAnimation 是视图动画的一种,它专门用于在 View 上执行位置的平移动画(即改变 View 的位置)。

它只能作用于 View 的位置(水平和垂直方向),不会改变视图的其他属性。

它是一种传统的动画方式,通常只会改变视图的布局位置。

示例:将 View 从左侧平移到右侧:

java 复制代码
TranslateAnimation animation = new TranslateAnimation(0f, 500f, 0f, 0f);
animation.setDuration(1000); // 动画持续时间为1秒
view.startAnimation(animation);

2. 动画表现

ObjectAnimator:

支持更细粒度的控制,可以通过设置插值器、监听动画进度、甚至暂停/恢复动画等操作来实现更复杂的动画效果。

可以同时处理多个属性的变化,例如同时改变位置、透明度和缩放。

TranslateAnimation:

只关注 View 的平移效果,无法直接影响 View 的其他属性(如透明度、缩放、旋转等)。

它的动画表现更简单,缺少控制属性变化的灵活性。

3. 是否修改 View 的属性

ObjectAnimator:

会修改 View 的属性。例如,ObjectAnimator 会直接修改 View 的 translationX 或 translationY 属性,或者其他属性,如透明度、旋转角度等。

动画结束后,属性值会被保留在 View 上。

TranslateAnimation:

不会修改 View 的属性。它通过改变视图的视觉效果来实现动画,动画结束后,View 的位置属性会恢复到初始状态,除非手动设置 setFillAfter(true),否则动画结束后 View 会返回到其原始位置。

4. 适用场景

ObjectAnimator:

更加灵活,适用于需要修改多个属性或者更复杂动画效果的场景。

常用于需要多个属性动画或特效(如旋转+透明度+平移)的复杂动画场景。

TranslateAnimation:

主要用于简单的平移效果。它非常适合用来处理视图位置上的简单平移动画。

5. 性能

ObjectAnimator:

在使用时,ObjectAnimator 会通过反射调用对象的 set 方法来修改属性,因此性能上相对 TranslateAnimation 略差。

TranslateAnimation:

性能上较为高效,因为它只关注 View 的位置变化,操作较简单。

总结:

ObjectAnimator 更为强大和灵活,可以动画化几乎所有的属性,并且可以同时处理多个属性的变化,适用于更复杂的动画需求。

TranslateAnimation 主要用于简单的视图位置动画,使用时相对简单,但只能处理平移效果,无法涉及其他属性的动画。

根据需求的不同,选择合适的动画类型:

如果只是简单的平移动画,TranslateAnimation 就足够了。

如果需要更复杂的效果(如平移、透明度、缩放等同时变化),或者需要更好的控制动画,选择 ObjectAnimator。

相关推荐
FindYou.2 小时前
Android之ListView
android
CYRUS_STUDIO6 小时前
攻防 FART 脱壳:特征检测识别 + 对抗绕过全解析
android·安全·逆向
aningxiaoxixi6 小时前
android 媒体框架之MediaCodec
android·网络·媒体
二流小码农7 小时前
鸿蒙开发:应用内如何做更新
android·ios·harmonyos
兰琛8 小时前
Compose仿微信底部导航栏NavigationBar :底部导航控制滑动并移动
android·android jetpack
wzj_what_why_how8 小时前
Kotlin JVM 注解详解
android·kotlin
雨白8 小时前
Android UI入门:XML与常用控件的使用
android
试行9 小时前
Android获取设备信息
android
monkey_slh9 小时前
JS逆向案例—喜马拉雅xm-sign详情页爬取
android·开发语言·javascript
奔跑吧 android10 小时前
【android bluetooth 案例分析 04】【Carplay 详解 3】【Carplay 连接之车机主动连手机】
android·bluetooth·carplay·bt·gd·aosp13