问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

objectanimator和valueanimator有什么区别

发布网友 发布时间:2023-07-15 07:41

我来回答

3个回答

热心网友 时间:2024-07-25 12:07

首先介绍下二者:
一,使用ObjectAnimator实现动画

该类作为ValueAnimator的子类不仅继承了ValueAnimator的所有方法和特性,并且还封装很多实用的方法,方便开发人员快速实现动画。同时,由于属性值会自动更新,使用ObjectAnimator实现动画不需要像ValueAnimator那样必须实现 ValueAnimator.AnimatorUpdateListener ,因此实现任意对象的动画显示就更加容易了。我们在大部分的开发工作中,都会使用ObjectAnimator而非ValueAnimator实现我们所需的动画效果。
(1) translationX 和 translationY:这两个属性控制着 View 的屏幕位置坐标变化量,以 layout 容器的左上角为坐标原点;
(2) rotation、rotationX 和 rotationY:这三个属性控制着 2D 旋转角度(rotation属性)和围绕某枢轴点的 3D 旋转角度;
(3) scaleX、scaleY:这两个属性控制着 View 围绕某枢轴点的 2D 缩放比例;
(4) pivotX 和 pivotY: 这两个属性控制着枢轴点的位置,前述的旋转和缩放都是以此点为中心展开的,缺省的枢轴点是 View 对象的中心点;
(5) x 和 y:这是指 View 在容器内的最终位置,等于 View 左上角相对于容器的坐标加上 translationX 和 translationY 后的值;
(6)alpha:表示 View 的 alpha 透明度。缺省值为 1 (不透明),为 0 则表示完全透明(看不见);
要动画显示 View 对象的某个属性,比如颜色或旋转值,我们所有要做的事情就是创建一个 Property animation,并设定对应的 View 属性。那接下来我们就用ObjectAnimator类来分别实现View的透明度渐变、收缩、移动和旋转等动画效果,那在此之前我们也来总结下使用ObjectAnimator实现动画的几个步骤,如下:
1.通过调用ofFloat()、ofInt()等方法创建ObjectAnimator对象,并设置目标对象、需要改变的目标属性名、初始值和结束值;
2.设置动画的持续时间、是否重复及重复次数等属性;
3.启动动画。
二,使用ValueAnimator实现动画
ValueAnimator是Property Animation系统的核心类,它包含了配置Property Animation属性的大部分方法,那要实现一个Property Animation,都需要直接或间接使用ValueAnimator类。那接下来我们将借助ValueAnimator类提供的方法来实现各种各样的动画效果,不过在此之前我们来学习一下实现动画的几个关键知识点。
使用ValueAnimator实现动画的步骤及实践
那一般使用ValueAnimator实现动画分为以下七个步骤:
1. 调用ValueAnimation类中的ofInt(int...values)、ofFloat(String propertyName,float...values)等静态方法实例化ValueAnimator对象,并设置目标属性的属性名、初始值或结束值等值;
2.调用addUpdateListener(AnimatorUpdateListener mListener)方法为ValueAnimator对象设置属性变化的*;
3.创建自定义的Interpolator,调用setInterpolator(TimeInterpolator value)为ValueAniamtor设置自定义的Interpolator;(可选,不设置默认为缺省值)
4.创建自定义的TypeEvaluator,调用setEvaluator(TypeEvaluator value)为ValueAnimator设置自定义的TypeEvaluator;(可选,不设置默认为缺省值)
5.在AnimatorUpdateListener 中的实现方法为目标对象的属性设置计算好的属性值。
6.设置动画的持续时间、是否重复及重复次数等属性;
7.为ValueAnimator设置目标对象并开始执行动画。
不过呢使用ObjectAnimator实现动画也有一些要求和*,一般有以下几点需要注意:
1.动画显示的属性必须带有一个 setter 方法(以骆驼拼写法命名),格式类似 set<propertyName>()。 因为 ObjectAnimator 会在动画期间自动更新属性值,它必须能够用此 setter 方法访问到该属性。 例如:假设属性名称为foo,则需要有一个setFoo()方法。 而你如果此 setter 方法不存在,那么我们可以有以下三种选择:
<1>如果权限允许的话,直接在类中增加此 setter 方法;
<2>修改封装类来增加此 setter 方法,并让该封装类来接收属性值并传给初始的对象;
<3>换用 ValueAnimator。
2.如果在调用 ObjectAnimator 的某个工厂方法时,我们只为 values... 参数指定了一个值,那此值将被认定为动画属性的结束值。 这样的话,动画显示的属性必须带有一个 getter 方法,用于获取动画的起始值。 此 getter 方法必须以get<propertyName>()的格式命名。 例如:假设属性名为foo,则需要有一个getFoo()方法。
3.动画属性的 getter 方法(如果必要的话)和 setter 方法所操作数据的类型必须与 ObjectAnimator 中设定的起始和结束值相同。
以上不难看出二者的区别了。

热心网友 时间:2024-07-25 12:07

“马德里”是地名同时也是西班牙的首都,而“皇家马德里”则是西班牙的一个足球俱乐部名称,位于西班牙首都“马德里”。这个足球俱乐部之前的名字是马德里足球队,之后获国王赐封“皇家”的尊称,最后改名为“皇家马德里”足球俱乐部。

热心网友 时间:2024-07-25 12:08

Objectanimator是Valueanimator的子类

objectanimator和valueanimator有什么区别

该类作为ValueAnimator的子类不仅继承了ValueAnimator的所有方法和特性,并且还封装很多实用的方法,方便开发人员快速实现动画。同时,由于属性值会自动更新,使用ObjectAnimator实现动画不需要像ValueAnimator那样必须实现 ValueAnimator.AnimatorUpdateListener ,因此实现任意对象的动画显示就更加容易了。我们在大部分的开...

android属性动画详解

3、动画类的命名不同: View Animation中动画类取名都叫XXXXAnimation,而在Property Animator中动画类的取名则叫XXXXAnimator大家都知道逐帧动画主要是用来实现动画的,而补间动画才能实现控件的渐入渐出、移动、旋转和缩放的;而Property Animator是在Android 3.0版本才引入的,之前是没有的。 为什么还要...

功能强大的动画系统——属性动画(三)

由下图(从 启舰的文章 中引用的)可以看出,ValueAnimator和ObjectAnimator的流程很相似,区别在于最后一步。ValueAnimator是在监听器中获取值,再调用目标对象的set方法进行改变;而ObjectAnimator则是对ValueAnimator操作进行封装,内部仍是在监听器中根据属性名反射调用set方法进行改变。这样的解释符合两者之间的继...

android中的动画有哪几类

(1)ValueAnimator:包含Property Animation动画的所有核心功能,如动画时间,开始、结束属性值,相应时间属性值计算方法等。应用ValueAnimator有两个步骤1计算属性值。2根据属性值执行相应的动作,如改变对象的某一属性。我们的主是第二步,需要实现ValueAnimator.onUpdateListener接口,这个接口只有一个函数onAnimationUpdate(),将要...

从setTranslationX谈属性动画和view动画的区别

属性动画都在android.animation包下,基类是Animator类,子类为ValueAnimator和AnimatorSet(作用同view动画的AnimationSet相同),ValueAnimator的子类有ObjectAnimator和TimeAnimator,一般我们用属性动画ObjectAnimator就ok了。不妨简单对比下和view动画架构上的异同:View动画,包名android.view.animation,基类为Animation...

android之animator 和animation 的区别

ValueAnimator stretchAnim1 = ObjectAnimator.ofFloat(newBall, "y", endY,endY + 25f);stretchAnim1.setDuration(duration/4);stretchAnim1.setRepeatCount(1);stretchAnim1.setInterpolator(new DecelerateInterpolator());stretchAnim1.setRepeatMode(ValueAnimator.REVERSE);ValueAnimator stretchAnim2 = ...

animation和animator的区别

ValueAnimator stretchAnim1 = ObjectAnimator.ofFloat(newBall, "y", endY,endY + 25f);stretchAnim1.setDuration(duration/4);stretchAnim1.setRepeatCount(1);stretchAnim1.setInterpolator(new DecelerateInterpolator());stretchAnim1.setRepeatMode(ValueAnimator.REVERSE);ValueAnimator stretchAnim2 = ...

android中的动画有哪几类

(2)ObjectAnimator:继承自ValueAnimator,要指定一个对象及该对象的一个属性,当属性值计算完成时自动设置为该对象的相应属性,即完成了Property Animation的全部两步操作。实际应用中一般都会用ObjectAnimator来改变某一对象的某一属性,但用ObjectAnimator有一定的限制,要想使用ObjectAnimator,应该满足以下条件:1.对象应该有一个...

object和reject区别 object和averse的区别 object和items的区别 class和object的区别 object和goal的区别 object和thing的区别 object与item的区别 setobjectvalue object value
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
海贼王里的空岛艾尼路是让路飞干掉的吗? 老公生日给他发多少红包? 腊梅花可以放在卧室里吗? 腊梅花为何不宜在家养殖? 我准备买依班娜Ibanez Steve Vai JEM70V SFG 史蒂夫 范签名款电吉他_百... 我用的是依班娜jemjr双摇吉他 ,总是容易跑弦,换一个琴桥会好吗?换琴桥... 依班娜的这把琴大概多少钱 求解 晚登三山还望京邑全诗意思是什么 根据这两篇作品《归园田居其一》《《晚登三山还望京邑》》,比较两位诗... 适合室外摆摊的游乐项目_学生摆摊夏季适合卖什么 压缩机冷冻油敞开放变质么 ac米兰中的AC什么意思没有的? 谁能告诉我项圈减轻疲劳的原理? 妈妈给我的银项圈 从东莞到深圳市罗湖区宝安南路华润万象城怎么坐车 京东购物安装师傅为什么要验证码 you can enter my promo code and open any cases, 齐齐哈尔k7154到哈尔滨多长时间 从齐齐哈尔到哈尔滨的往返火车?时间、车次、价格请说明。可以在齐齐哈 ... 齐齐哈尔到哈尔滨西的列车时刻及票价查询 齐齐哈尔市到哈尔滨有多远?坐什么车?大约多长时间? 齐齐哈尔离哈尔滨多远 形容女人美到极致的诗句 用什么方法可以洗掉裤子上粘着的泡泡糖? 白面大米玉米小米那个营养高 怎么找一个店铺的联系方式 怎么全部删除微博内容? 疤痕增生 吃什么?要忌口吗?在饮食上,我需要有哪些不可以吃的呢?_百度... 如何去新疤 下列生物不是单细胞生物的是 大豆油取口能放多久 宣太后和义渠王的孩子是谁 传闻孩子是被宣太后杀死 身上有劳动合同还可以再找工作吗 未毕业的大学生在暑假签了劳务合同怎么办? 签劳务合同影响应届生 外国电影主角在荒岛上捡到信号枪对天开枪炸掉轮船捡到过一箱撬棍的... 求教,多肉增色剂 真的有用吗如何让多肉 东财在深圳认可度高吗 真丝增色剂能重复使用吗? 西南财经大学和暨南大学在深圳就业哪个有优势 果实增色剂配方 如何让果实增色 想在深圳就业 是去厦门大学金融系好还是西南财经大学金融系好?_百度知 ... 猪肉哪里最好 ...听说是一次性的,不知道这个Tenga可以用几次? 求还剩多少一年级数学 一年级数学:如果一幅图表示求“还剩下几个?”可以从()减去左边的数得到... 塔库玛p1线杯不顺畅 小学一年级数学求原来有多少 why we read by Katha pollitt 悉盖去钢钉还用住院吗?