android objectanimator 位移动画,Android ObjectAnimator类学习指南:手把手带你学会如何自定义属性动画...

本文详细介绍了Android中ObjectAnimator的使用,包括它的原理、基础使用、实例演示以及与ValueAnimator的区别。ObjectAnimator是属性动画的核心方法类,通过自动赋值给对象属性来实现动画效果,可以直接对对象的属性进行操作,简化了动画实现。文中通过平移、旋转、缩放和透明度等示例展示了ObjectAnimator的应用,并解析了其实现动画的内部逻辑。此外,还探讨了如何自定义对象属性实现更复杂的动画效果。
摘要由CSDN通过智能技术生成

bce3f1d4e1f2

前言

属性动画的使用 是 Android 开发中常用的知识

今天,我将讲解属性动画使用中最核心的一个方法类:ObjectAnimator,希望你们会喜欢。

目录

bce3f1d4e1f2

示意图

储备知识

1. 简介

实现属性动画中的一个核心方法类

继承自ValueAnimator类,即底层的动画实现机制是基于ValueAnimator类

2. 实现动画的原理

直接对对象的属性值进行改变操作,从而实现动画效果

如直接改变 View的 alpha 属性 从而实现透明度的动画效果

3. 本质原理

通过不断控制 值 的变化,再不断 自动 赋给对象的属性,从而实现动画效果。如下图:

bce3f1d4e1f2

示意图

从上面的工作原理可以看出:ObjectAnimator与 ValueAnimator类的区别:

ValueAnimator 类是先改变值,然后 手动赋值 给对象的属性从而实现动画;是 间接 对对象属性进行操作;具体请看文章:Android:这份Android核心使用类ValueAnimator学习指南请收好!

ObjectAnimator 类是先改变值,然后 自动赋值 给对象的属性从而实现动画;是 直接 对对象属性进行操作;

至于是如何自动赋值给对象的属性,下面会详细说明

4. 基础使用

4.1 使用步骤

由于是继承了ValueAnimator类,所以使用的方法十分类似:XML 设置 / Java设置

/*

* 设置方式1:Java

*/

// 步骤1:创建ObjectAnimator对象

ObjectAnimator animator = ObjectAnimator.ofFloat(Object object, String property, float ....values);

// 作用:

// 1. 创建动画实例

// 2. 参数设置:

// Object object:需要操作的对象

// String property:需要操作的对象的属性

// float ....values:动画初始值 & 结束值(不固定长度)

// 若是两个参数a,b,则动画效果则是从属性的a值到b值

// 若是三个参数a,b,c,则则动画效果则是从属性的a值到b值再到c值

// 以此类推

// 至于如何从初始值过渡到结束值,同样是由估值器决定,此处ObjectAnimator.ofFloat()是有系统内置的浮点型估值器FloatEvaluator,同ValueAnimator讲解

// 步骤2:设置动画属性

// 设置动画运行的时长

anim.setDuration(500);

// 设置动画延迟播放时间

anim.setStartDelay(500);

// 设置动画重复播放次数 = 重放次数+1

// 动画播放次数 = infinite时,动画无限重复

anim.setRepeatCount(0);

// 设置重复播放动画模式

anim.setRepeatMode(ValueAnimator.RESTART);

// ValueAnimator.RESTART(默认):正序重放

// ValueAnimator.REVERSE:倒序回放

// 步骤3:启动动画

animator.start();

/*

* 设置方式2:xml

*/

// 步骤1:在路径 res/animator 的文件夹里创建动画效果.xml文件

// set_animation.xml

// 步骤2:设置动画参数

// ObjectAnimator 采用 标签

android:valueFrom="1" // 初始值

android:valueTo="0" // 结束值

android:valueType="floatType" // 变化值类型 :floatType & intType

android:propertyName="alpha" // 对象变化的属性名称

/>

// 步骤3:启动动画

// 1. 载入XML动画

Animator animator = AnimatorInflater.loadAnimator(context, R.animator.view_animation);

// 2. 设置动画对象

animator.setTarget(view);

// 3. 启动动画

animator.start();

4.2 使用实例

此处先展示四种基本变换:平移、旋转、缩放 & 透明度

平移

// 1. 创建动画作用对象:此处以Button为例

Button mButton = (Button) findViewById(R.id.Button);

// 2. 获得当前按钮的位置

float curTranslationX = mButton.getTranslationX();

// 3. 创建动画对象

ObjectAnimator animator = ObjectAnimator.ofFloat(mButton, "translationX", curTranslationX, 300,curTranslationX);

// 表示的是:

// 动画作用对象是mButton

// 动画作用的对象的属性是X轴平移(在Y轴上平移同理,采用属性"translationY"

// 动画效果是:从当前位置平移到 x=1500 再平移到初始位置

// 4. 设置动画时长

animator.setDuration(5000);

// 5. 启动动画

animator.start();

bce3f1d4e1f2

属性动画 - X轴平移.gif

旋转

// 1. 创建动画作用对象:此处以Button为例

Button mButton = (Button) findViewById(R.id.Button)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值