Android动画之ViewPropertyAnimator(专用于view的属性动画)

Android动画之ViewPropertyAnimator(专用于view的属性动画),第1张

属性动画对比原来的视图动画有很多的优点,属性动画可以对所有的对象做动画 *** 作,但Android开发中需要做动画最多的还是View,如果只是对一个view做动画,很少的几个属性还行,如果是对同一个view的十几个属性同时做动画,相信属性动画的写法是比较繁琐的。ViewPropertyAnimator从名字就可以看出是专用于View的属性动画,在API12被提供。ViewPropertyAnimator专用于 *** 作View动画,语法更加简洁,使用更加方便。

developer: https://developer.android.google.cn/reference/android/view/ViewPropertyAnimator

如何获取ViewPropertyAnimator 对象:

ViewPropertyAnimator 没有构造函数,通过View.animate()方法可以方便的获取ViewPropertyAnimator 对象,此时获取的动画对象就专用于 *** 作当前view。

setDuration()//设置动画时长

setInterpolator()//设置插值器

setStartDelay()//设置延迟开始时间

start()//立刻开始动画

cancel()//取消动画

明显看到图片先往下走了一段,然后向左的动画才开始执行。

链式 *** 作

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).translationY(300).scaleX(0.5f)

以上函数的执行,会导致相同动画的cancle,以上函数都是除了坐标相关都是以view左上角为坐标原点。

方法都比较简单,下面距几个列子:

首先利用translationX,translationXBy来区分By的意义:

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationY(300)

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationYBy(300)

translationYBy 可以多次移动View,translationY多次执行没有效果。

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(100).y(100)

ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).rotation(270)

据观察withEndAction相当于动画开始,withStartAction相当于动画结束。

可以看到可以添加setUpdateListener监听,但无法通过这个监听函数监听到当前动画的信息,所以这个监听函数可能用处不大。

Animation动画概述和执行原理

Android动画之补间动画TweenAnimation

Android动画之逐帧动画FrameAnimation

Android动画之插值器简介和系统默认插值器

Android动画之插值器Interpolator自定义

Android动画之视图动画的缺点和属性动画的引入

Android动画之ValueAnimator用法和自定义估值器

Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性

Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator

Android动画之AnimatorSet联合动画用法

Android动画之LayoutTransition布局动画

Android动画之共享元素动画

Android动画之ViewPropertyAnimator(专用于view的属性动画)

Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现

Android动画之ActivityOptionsCompat概述

Android动画之场景变换Transition动画的使用

Android动画之Transition和TransitionManager使用

Android动画之圆形揭露动画Circular Reveal

Android 动画之 LayoutAnimation 动画

Android动画之视图动画的缺点和属性动画的引入

通过AnimationListener可以监听Animation的运行过程,有三个方法分别是Animation开始的时候调用,完成的时候调用,重复的时候调用。

AnimationSet,动画集合。 我们最常用的是调用其 addAnimation 将一个个不一样的动画组织到一起来,然后调用view 的 startAnimation 方法触发这些动画执行。

setAnimation是告诉该控件我待会要执行什么动画,而要执行的的动画,是需要手动添加的。并且需要父view在动画快要开启的时候,调用invalidate。需要一定的条件限制。

而startAnimation告诉该控件,我要立马执行该动画,该动画就是已经设置好的动画。调用它时就会立即开始动画。

参看这篇文章: Android动画之Interpolator插补器和TypeEvaluator估值器

Property Animation提供了Animator.AnimatorListener和Animator.AnimatorUpdateListener两个监听器用于动画在播放过程中的重要动画事件。下面是两个监听器接口和方法的一些介绍和说明:

上面讲到ViewAnimation有许多xml加载,当然PropertyAnimation也可以对应xml加载,位置为 res/animator/

animator.xml

调用就用到了AnimatorInflater类了

组合动画也可以xml加载

在 Android 3.0 中给 View 增加了一些新的属性以及相应的 getter、setter 方法。Property Animation系统可以通过修改 View 对象实际的属性值来实现屏幕上的动画效果。此外,当属性值发生变化时,Views 也会自动调用 invalidate() 方法来刷新屏幕。 View 类中新增的便于实现 property 动画的属性包括:

1 . 第一个参数:设置目标对象,即 *** 纵的view

2 . 第二个参数:设置 *** 作的动画的属性值(见上面讲解的动画属性值)

3 . 第三个参数:可变数组参数 (初始值,中间值,结束值)。可以有一个到N个,如果是一个值的话默认这个值是动画过渡值的结束值。如果有N个值,动画就在这N个值之间过渡。

针对同一个对象多个属性,同时作用多种动画

可以调用其playTogether(同时执行)、playSequentially(顺序执行)、play、before、with、after 等方法设置动画的执行顺序,然后调用其start 触发动画执行。

Android 3.0后,谷歌给View增加animate方法直接驱动属性动画。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11462259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存