Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android 属性动画详解,属性动画基本用法

Android 属性动画详解,属性动画基本用法

作者头像
非著名程序员
发布于 2018-02-02 11:36:06
发布于 2018-02-02 11:36:06
1.3K0
举报
文章被收录于专栏:非著名程序员非著名程序员

Hello,大家好,今天又来装逼了,装逼也上瘾啊,最近公司不是特别忙,我想这也就是我出来装逼的最好时机吧!额,,哈哈,进入正题。如有疑问欢迎留言,如有谬误欢迎批评指正。

在Tween动画的讨论中,我们提到在Android中动画可以分为三类:①帧动画②Tween(补间动画)③Property Animation(属性动画),在前面的文章中,分别对帧动画和Tween动画进行了非常详细的讨论,如果有兴趣可以去上面的链接去阅读。那么今天就来和大家一起讨论下Property Animation,相信通过本系列博客的讨论你将对Android中的动画有个非常详细的了解。 通过本篇博客你将学到以下内容: ①为什么要引入属性动画 ②属性动画的基本用法 ③属性动画的监听器 ④组合动画的实现 ⑤属性动画的XML实现

1、为什么要引入属性动画

首先来看为什么要引入属性动画,我相信很多人跟我一样,看到属性动画,在脑海里闪现的第一个问题就是为什么要引入属性动画?我们都知道Android中已经有帧动画和补间动画了,那么为什么还要引入属性动画呢?要想得到这个问题的正确答案,无疑要去谷歌的官网了,首先我们来看看官网(官网地址)对Property Animation与补间动画的区别进行的介绍:

补间动画只提供了对View进行增加动画的能力,所以如果你想对除View之外的其它对象做动画,你必须实现你自己的代码来达到这样的效果。另外,补间动画只能对View的几个方面进行动画的添加,例如View的缩放和旋转,而不是View的背景颜色等等。

补间动画的另一个缺点是它只修改了视图绘制的地方,而不是实际View的本身。比如,你给Button定义了一个在屏幕上移动的动画,这个Button的绘制是正确的,但是这个Button实际可以点击的位置是没有改变的,所以你必须用你自己的逻辑来解决这个问题。

使用属性动画这些约束将完全被解除,并且你可以对任何对象(Views and non-Views)的任何属性添加动画,并且这个对象的本身实际也是改变的。从更高层次上来说,你可以选择你想要的属性,来给其添加动画,如颜色、位置或大小,并且你可以通过插值器或者多个动画的同步,来定义你所需要的动画。

然而补间动画需要较少的时间来设置,并且也需要更少的代码。如果补间动画完成了你所需要做的一切或者现有的代码就是按照你想要的方式工作的,那么你没有必要使用属性动画。针对不同的情况有时候也许需要这两种动画进行工作才是有意义的。

以上三段就是官网给出的属性动画与补间动画的区别,可能看着比较费劲,其实引入属性动画主要有三点原因:

①因为补间动画只能对View进行操作,而不能对一个对象的属性,如颜色等进行操作,而属性动画可以,并且属性动画的操作范围不仅仅是View,它可以是任何对象。

②补间动画只能对View的几个方面做动画,也就是说补间动画不仅把范围缩小到View,而且并不是能对View的各个方面做动画,而只能是alpha(渐变)、scale(缩放)、translate(位移)、rotate(旋转)这四种动画。

③补间动画只是改变了View绘制的地方,而并没有真正改变View本身。什么意思?假如手机屏幕上有一个View,我们让他做补间动画向右移动20px,我们会看到这个View向右移动了20px,而此时你会发现这个View是不能响应你的点击事件的,只有你点击原来的位置才能触发这个View的点击事件。因为这个View实际还在原来的位置,只不过补间动画将这个View绘制的地方向右移动了20px,而这个View真正的属性并没有改变。

通过上面的介绍,相信大家已经明白了属性动画产生的原因,了解了它产生的背景之后,接下来的一步就是要学习它的用法了。

2、属性动画的介绍

属性动画常用的有两个类分别是ValueAnimator和ObjectAnimator,它的继承关系图如下:

从继承关系图中我们可以清晰的看到ValueAnimator和AnimatorSet是继承与抽象类Animator的,而ObjectAnimator和TimeAnimator是继承自ValueAnimator的。这个继承关系图,大家要好好识记一下,后面会用到,知道这些关系后,我们的讨论的方向就更加明确了,总共就这么几个类,逐一来看看呗。

3、ValueAnimator的基本使用

在学习ValueAnimator的基本使用之前,先来看下它的一些常用的方法

在上面的方法中,可能大家比较陌生的就是of开头的那几个,其中ofFloat,ofInt它们接收的参数类型都是可变参,所以我们可以传入任何数量的值;传进去的值列表,就表示动画时的变化范围;比如ofInt(3,9,6)就表示从数值3变化到数值9再变化到数值6。而ofObject接收两个参数一个TypeEvaluator类型的,另一个是Object类型的可变参数,关于TypeEvaluator,后续的文章会有详细的讨论。然后就是ofPropertyValuesHolder多属性动画同时工作管理类,有时候我们需要对一个对象的多个属性做动画,此时就会用到它。setFrameDelay设置多长时间刷新一帧,默认是10ms。但最终依赖系统的当前状态,一般我们不用管。

说了这么多废话,到底怎么用,其实ValueAnimator的使用非常简单,首先来看个最基础的用法,假如我们想创建一个值从0到1的动画,动画的时长为200毫秒,代码应该这样写:

执行上面的代码就执行了一个值从0到1平滑过渡的动画,从上面的代码中可以看出它并没有与任何的控件的任何属性有关系,从它的名字也能看出来它是对值做平滑过渡的,我们怎么知道呢?很简单只需要对它做监听就可以了,我们只需要添加如下代码:

在上述代码中我们给valueAnimator添加了一个addUpdateListener监听,在监听的回调中,回调给我们的是当前状态的ValueAnimator 的实例,得到这个实例后通过调用getAnimatedValue就可以拿到当前的值,然后将其打印,这里有一点需要提醒大家注意的是拿到的这个值的类型是与of..后的值得类型相对应的,ofFloat拿到的就是float类型,ofInt拿到的就是int类型。

运行上述代码打印结果如下:

从打印结果中可以看到valueAnimator的值在200毫秒内从0逐渐变化到了1,这些中间的过程谷歌已经帮我们实现好了。

在上面我们提到ofFloat(float… values)接收的参数类型是可变参,也就是说这里传递的参数的个数是没有限制,我们也可以传递多个参数,比如

上述代码就表示在200毫秒内,valueAnimator的值从0变化到3,然后再变化到1。ofInt的使用与ofFloat类似,只不过传的值的类型不同。

到这里可能有的同学会问,说了半天没有看到ValueAnimator做一个动画啊,那接下来就让一个View做位移动画,代码如下:

在上述代码中通过对valueAnimator添加监听,拿到当前帧的值后,不断的设置ImageView的TranslatonX(该View在X轴的偏移量)值,从而让其移动。它的运行效果如下:

可以看到我们通过使用ValueAnimator实现了在3秒内在X轴方向上移动100px的效果。这个动画的操作是在ValueAnimator的监听中实现的。

小总结: ValueAnimator是计算动画过程中变化的值,包含动画的开始值,结束值,持续时间等属性。但是这些值与我们的控件是无关的,要想把计算出来的值应用到对象上,必须为ValueAnimator注册一个监听器,该监听器负责更新对象的属性值。在实现这个监听器的时候,可以通过getAnimatedValue()的方法来获取当前动画的值,拿到这个值后,我们就可以为所欲为了。

4、ObjectAnimator的基本用法

相比于ValueAnimator,在开发中可能ObjectAnimator要比ValueAnimator用的多,因为ObjectAnimator可以直接操作对象的属性,而不用像ValueAnimator那么麻烦。 假如让一个ImageView做旋转的动画,代码可以这样写:

从上述代码我们可以看到ObjectAnimator与ValueAnimator的用法有点相似,又有不同,在上述代码中objectAnimator调用了ofFloat()方法来去创建一个ObjectAnimator的实例,与ValueAnimator不同的是,这里的ofFloat()方法当中接收的参数有点变化了。这里第一个参数要求传入一个object对象,即进行动画的对象,在上面我们传了一个ImageView。第二个参数是属性的名字,因为做旋转动画所以这里传的属性的名字为“rotation”。后面就是可变参数了,这里我们传的是0,360,表示让ImageView旋转360度,然后设置时长,调用start方法。美女效果如下,啊,不是,是运行效果如下:

可以看到美女还是不错的,啊。。不是,是运行效果还是不错的。

假如想看到透明度渐变的效果呢,代码可以这么写:

运行效果如下:

在上面的代码中我们设置里的“alpha”属性,让其在3秒内完成透明度从0到1的变化。

到这里从总体上看,属性动画的用法还是比较简单的,肯定有的童鞋会有疑问,ofFloat中的第二个参数都是能传哪些值呢?上面的代码中传了个“alpha”和”rotation”,但是究竟它能传哪些值呢?这一点从其名字中可以看出“属性”动画,无疑它是操作对象的属性的,所以它可以接收任意值,但是这里有一个前提,那就是这个属性必须要有get和set方法,什么意思呢?属性动画针对我们传入的属性值,比方说“alpha”,它会去寻找这个属性名所对应的get和set方法,内部会通过java反射机制来调用set函数修改对象属性值。由此我们可以推断出ImageView中肯定会有对alpha属性的get和set操作,通过寻找你会发现这两个方法在ImageView的父类View中,通过寻找在View中确实找到了这两个方法如下:

这也进一步验证我们的说法,到这里我们也知道,所有继承自View的控件都可以进行alpha变换,因为View中就有getAlpha和setAlpha方法。也许到这有的童鞋还会心有余悸心想上述说的我理解了,但是假如说我想对View的属性进行变换,不可能每次都要去View的源码里去看看它有没有get和set方法吧,这里呢,对经常用到的属性做一个小的总结:

①translationX和translationY:表示在X轴或者Y轴方向上的位移

② scaleX和scaleY:表示在X轴或者Y轴方向上的缩放

③rotation、rotationX和rotationY:这三个属性控制View对象围绕支点进行2D和3D旋转。

④ pivotX和pivotY:这两个属性控制着View对象的支点位置,围绕这个支点进行旋转和缩放变换处理。默认情况下,该支点的位置就是View对象的中心点。

⑤x和y:这是两个简单实用的属性,它描述了View对象在它的容器中的最终位置,它是最初的左上角坐标和translationX和translationY值的累计和。

⑥ alpha:它表示View对象的alpha透明度。默认值是1(不透明),0代表完全透明(不可见)。

当然我们可以操作的属性远远不止这些,任何属性只要有get和set方法,我们都可以操作。

ObjectAnimator是属性动画框架中最重要的实行类,创建一个ObjectAnimator只需通过他的静态工厂类直接返回一个ObjectAnimator对象。传的参数包括一个对象和对象的属性名字,但这个属性必须有get和set函数,还包括属性的初始值,最终值,还可以调用setInterpolator设置曲线函数。

5、Animator监听

对于Animator的监听在上面的代码中也略有体现,我们通过调用addUpdateListener这个方法给ValueAnimator添加了一个监听,其实从ValueAnimator的源码中可以看出它总共是有两个监听器的,监听器相关源码:

这里有一点大家需要明白,大家可以回到开始我们给出的继承关系图,从继承关系图中我们可以看出 AnimatorSet和ValueAnimator是继承自Animator的,而ObjectAnimator是继承自ValueAnimator的。所以对于Animator类中的监听,AnimatorSet、ValueAnimator、ObjectAnimator都可以用,而ValueAnimator类中的监听,AnimatorSet中是没有的,而ObjectAnimator是继承自ValueAnimator的,所以ValueAnimator和ObjectAnimator都是可以调用的。理论说完,就上实例我们可以这样为属性动画添加AnimatorListener 监听:

可以看到AnimatorListener提供了对动画开始、动画重复、动画结束、取消动画做了监听。但是有时候我们并不需要这么多啊,比如我们只想监听动画的开始,假如用这种方法需要把这四个方法都重写才行,代码太冗余了,谷歌的攻城狮也是想到了这一点,给我们提供了一个适配器AnimatorListenerAdapter,有这个类我们就可以选择性的,根据需要添加监听了,比如我们只需要添加动画开始时的监听,我们可以这么做:

有木有比上面简化了很多,可以看出谷歌对属性动画的优化还是下了很多功夫的。

6、组合动画的实现

上面我们都是对一个对象进行单一的动画,但是一个很酷的动画往往需要多个动画协同完成,谷歌也是给我提供了多种实现方式,一起来看看吧。

要想完成多个动画协同工作需要借助AnimatorSet这个类,这个类主要提供了三个播放方法,play(),playSequentially(),playTogether()。其中playSequentially()表示多个动画按顺序执,它主要有两种形式的参数playSequentially(Animator… items)和playSequentially(List <Animator> animator);一个是可变参数,另一个是动画集合。 playTogether()表示几个动画同时执行,它接收的参数类型与playSequentially()一致。最后就是play方法了,play方法接收一个Animator动画实例,play(Animator anim),调用它之后会返回一个AnimatorSet.Builder的实例,AnimatorSet.Builder中包括以下四个方法

  • after(Animator anim) 将现有动画插入到传入的动画之后执行
  • after(long delay) 将现有动画延迟指定毫秒后执行
  • before(Animator anim) 将现有动画插入到传入的动画之前执行
  • with(Animator anim) 将现有动画和传入的动画同时执行 好了,理论完了之后就要联系实际了,那接下来我们来做一个这样的组合效果:让一张图片旋转出厂的同时伴随着渐变和缩放,代码可以这样写:

运行效果如下

可以看出它是渐变、旋转、缩放、三种动画的组合,效果还算不错。

接着我们来看下play的用法,与上述动画类似,我们来实现这样一个动画,让一张图片缩放旋转出厂,出厂之后让它消失,可以用play实现,代码如下:

运行效果如下:

这样我们就用play实现了一个比较不错的组合动画了。

7、xml文件实现

前面我们在学Tween动画的时候,我们是分两篇介绍的,一篇是xml文件配置的实现,一篇是代码的实现,上述我们都是用代码实现的属性动画,那么怎么配置xml文件实现的?它的实现也很简单,首先需要做的就是在res下建立一个animator文件夹,然后创建一个xml文件,/res/animator/roation.xml。 在xml文件中总共有可以用三个标签,与代码实现是对应着的

  • <animator> 对应代码中的ValueAnimator
  • <objectAnimator> 对应代码中的ObjectAnimator
  • <set< 对应代码中的AnimatorSet 那么它们都可以设置哪些属性值呢? animator中的属性如下:
  • android:duration:表示动画播放的时长
  • android:valueFrom:动画属性开始的值;取值范围为float,int和color,如果未指定,动画开始属性通过属性的get方法获得。颜色用6位16进制数表示(例如:#333333)
  • android:valueTo:动画结束值;取值范围同valueFrom
  • android:startOffset:取值范围为int,动画的start方法被调用后,延迟多少毫秒执行。
  • android:repeatCount:动画重复的次数,可以设置为-1或者正整数,-1表示无限循环,假如我们设置成1,<font color=”#FF000000>表示重复执行一次,所以它总共会执行2次。
  • android:repeatMode:动画重复模式,取值为repeat和reverse;repeat表示正序重播,reverse表示倒序重播,这与前面讲的Tween动画是类似的。
  • android:valueType:表示参数值类型,取值为intType和floatType;与android:valueFrom、android:valueTo相对应。如果这里的取值为intType,那么android:valueFrom、android:valueTo的值也就要对应的是int类型的数值。float也是一样。如果如果android:valueFrom、android:valueTo的值设置为color类型的值,则不需要设置这个参数;
  • android:interpolator:设置加速器;

objectAnimator标签中的属性如下:

可以看到与animator中的属性是差不多的,这里多了一个

  • android:propertyName=”string”表示要做动画的属性名字。其它的属性与animator中的一致,就不再浪费口舌和篇幅了。

set标签中的属性如下: set标签只有一个属性如下:

  • android:ordering=[“together” | “sequentially”],其中together表示set标签下的动画同时执行,而sequentially表示set标签下的动画逐个执行。

理论终于说完了,掌握了理论之后,就可以来看妹子了。 最后我们以一个用xml实现的组合动画结束本篇的内容,我们实现的效果是这样的,先让这个妹子进入到屏幕的正中央,然后让她旋转360度,再然后让她离开屏幕,离开屏幕的同时伴随着透明度的变化。先看效果:

效果还算比较炫酷吧, 这也算是一个稍微复杂一点的动画了,与之对应的xml配置内容如下:

怎样将其xml文件加载到程序中呢?代码也很简单,只需要这样写:

可以看到,直接调用AnimatorInflater的loadAnimator将xml文件加载进来,并给其设置目标对象,最后调用start方法启动,就完成了。xml文件的配置大家可以根据运行效果自己分析分析。 由于篇幅原因以及今天是阴天的原因,这一篇就写到这里了,因为我得赶紧去买个避雷针去。

如果你想看我装逼,那就锁定本台期待接下来的关于属性动画的文章吧。

参考文章:https://developer.android.com/guide/topics/resources/animation-resource.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android十八章:属性动画Android属性动画(第一话)
Android动画能给界面带来很炫的效果,如果我们要实现这些效果,在android3.0版本前实现动画主要有2种方式,帧动画和补间动画。
ppjun
2018/09/05
1.2K0
Android 属性动画:这是一篇很详细的 属性动画 总结&攻略
实现动画效果在Android开发中非常常见,因此Android系统一开始就提供了两种实现动画的方式:
Carson.Ho
2019/02/22
4.1K0
【Android】属性动画(基本用法)
1、前言 在我们体验一款APP时,炫酷的动画往往能让用户体验大幅度提升。想当年我刚学Android的时候,无意中看到蘑菇街购物车的动画效果,把我给激动得,非要在自己的APP中加入那动画,记得当时用费了好大的劲...不提了,说多了都是泪... 先了解下,目前可以实现动画的方式有: 帧动画(Frame) :将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放 特点:帧动画 由于是一帧一帧的,所以需要图片多。会增大apk的大小,但是这种动画可以实现一些比较难的效果 比如说等待的环形进度 补
Gavin-ZYX
2018/05/18
1.5K0
从零开始学Android自定义View之动画系列——属性动画(2)
独立的动画能够实现的视觉效果毕竟是相当有限的,因此将多个动画组合到一起播放就显得尤为重要。幸运的是,Android团队在设计属性动画的时候也充分考虑到了组合动画的功能,因此提供了一套非常丰富的API来让我们将多个动画组合到一起。 实现组合动画功能主要需要借助AnimatorSet这个类,这个类提供了一个play()方法,如果我们向这个方法中传入一个Animator对象(ValueAnimator或ObjectAnimator)将会返回一个AnimatorSet.Builder的实例,AnimatorSet.Builder中包括以下四个方法:
老马的编程之旅
2022/06/22
5400
从零开始学Android自定义View之动画系列——属性动画(2)
深入分析Android动画(一)
  View动画顾名思义其作用对象为View,包含平移、缩放、旋转、透明,这四类变化分别对应着Animation的子类TranlateAnimation、ScaleAnimation、RotateAnimation和AlphaAnimation。虽然有对应的类,不过,在Android动画中,还是建议用XML来定义,其对应的标签如下所示
LoveWFan
2018/08/07
3880
深入分析Android动画(一)
Android ObjectAnimator类:手把手带你自定义属性动画
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Carson.Ho
2019/10/25
1.8K0
让View跟随状态动起来——StateListAnimator
StateListAnimator定义了一组动画,可以根据View drawable的状态进行不同的切换。所谓状态指的是statepressed、stateenabled等这些状态。 Android提供的drawable中,其中有一种就是selector,只不过那种是指定的图片,而StateListAnimator指定的动画。 不说废话,先看下效果:
用户1108631
2019/08/17
1.9K0
Android入门之动画
Android动画 AlphaAnimation RelativeLayout rl_splash = (RelativeLayout) findViewById(R.id.rl_splash); //播放动画效果 AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f); //设置Alpha动画的持续时间 animation.setDuration(2000); //播放Alpha动画 rl_splash.setAnimation(animati
xiangzhihong
2018/01/26
8230
Android 动画总结(5) - 属性动画
属性动画改变属性值,所以几乎可以对任何对象执行动画,而不仅仅是 View,比起补间动画,适用范围更广。
三流之路
2018/09/11
1K0
Android属性动画完全解析(上),初识属性动画的基本用法
用户1158055
2018/01/05
1.9K0
Android属性动画完全解析(上),初识属性动画的基本用法
Android开发之漫漫长途 XVII——动画(续)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!
LoveWFan
2018/08/21
2970
Android属性动画的高级技巧
在 Android 开发中,属性动画是非常常见的一种动画方式。它可以让我们实现各种复杂的动画效果,比如旋转、缩放、移动、渐变等。那么,Android 属性动画是如何实现的呢?本文将从原理的角度来介绍 Android 属性动画的实现方法。
Rouse
2023/08/31
4270
Android属性动画的高级技巧
Android 属性动画框架 ObjectAnimator、ValueAnimator ,这一篇就够了
我们都知道 Android 自带了 Roate Scale Translate Alpha 多种框架动画,我们可以通过她们实现丰富的动画效果,但是这些宽家动画却有一个致命的弱点,它们只是改变了 View 显示的大小,而没有改变 View 的响应区域。这时以 ObjectAnimator、ValueAnimator 为代表的属性动画也就应运而生了。
圆号本昊
2021/09/24
3.7K0
Android 属性动画框架 ObjectAnimator、ValueAnimator ,这一篇就够了
Android开发之属性动画
Android动画主要分为3种 View动画(Android开发之View动画) 帧动画(Android开发之帧动画) 属性动画 何为属性动画? 通过改变对象的属性以达到动画的效果,API 11以上可以用,如果想兼容旧版本请使用 https://github.com/JakeWharton/NineOldAndroids 。属性动画的默认的时间为300ms,它可以在时间间隔内完成对象从一个属性值到另外一个属性值的改变。比较常用的属性动画对象有: ValueAnimator,ObjectAnimator,
YungFan
2018/04/24
8530
Android开发之属性动画
Android--属性动画基础
安卓中动画分成两类 一种是传统动画,如:补间动画,帧动画,其本质是canvas的矩阵变换 另一种是属性动画,由谷歌从Android3.0以后推出 传统动画仅仅是视觉效果,并不会实际改变view的属性,比如:平移动画不会改变view的原来坐标,如果需要点击view还是要点击原来的位置。而属性动画不同,它是真正的改变view的属性(成员变量)。 我们使用属性动画,需要掌握5个类 ObjectAnimator ValueAnimator PropertyValueHolder TypeEvaluator Inte
aruba
2020/07/03
5430
Android--属性动画基础
自定义View(六)-动画- AnimatorSet与XML设置属性动画
AnimatorSet是组合动画,前面在ObjectAnimator.ofPropertyValuesHolder(),时也可以做到控制多个属性做动画,但是.ofPropertyValuesHolder(),仅仅是将多个属性同时做动画却无法灵活控制每个属性的播放顺序,针对的是一个控件,而AnimatorSet是组合动画。更侧重的是在多个动画播放时对动画的控制(可以控制动画的顺序,延时,同时可以控制多个控件的动画等等)。
g小志
2018/09/11
1.5K0
自定义View(六)-动画- AnimatorSet与XML设置属性动画
android动画解析(初级)
ObjectAnimator继承自ValueAnimator的,底层的动画实现机制也是基于ValueAnimator来完成的,因此ValueAnimator仍然是整个属性动画当中最核心的一个类。那么既然是继承关系,说明ValueAnimator中可以使用的方法在ObjectAnimator中也是可以正常使用的,它们的用法也非常类似.
方志朋
2022/11/30
5150
android属性动画
1、概述 Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有一个颜色的切换动画;你希望可以使用3D旋转动画;你希望当动画停止时,View的位置就是当前的位置;这些View Animation都无法做到。这就是Property Animation产生的原因,本篇博客详细介绍Prope
xiangzhihong
2018/01/30
9130
android属性动画
Android样式的开发:Property Animation篇
前篇文章说过,Android框架还提供了两种动画体系,前一篇已经总结了视图动画(View Animation)的用法,本篇则接着总结另一种动画体系——属性动画(Property Animation)的用法。
Keegan小钢
2018/08/10
1K0
Android技能树 — 动画小结
最近整理了下自己学过的动画方面的知识。用百度脑图做了动画知识的思维脑图,哪里如果觉得不对,大家可以留言提出哦。
青蛙要fly
2018/08/29
7990
Android技能树 — 动画小结
相关推荐
Android十八章:属性动画Android属性动画(第一话)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档