Android动画-属性动画-ViewPropertyAnimator
来源:互联网 发布:软件外包是什么意思 编辑:程序博客网 时间:2024/06/07 00:03
原文地址 http://blog.csdn.net/qq_25806863/article/details/70229687
想想之前使用组合动画的时候,是不是这样的:
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(btnShow, "translationX", 0, 300);ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(btnShow, "rotation", 0, 360);AnimatorSet animatorSet = new AnimatorSet();animatorSet.setDuration(2000);animatorSet.play(objectAnimator).with(objectAnimator1);animatorSet.start();
或者这样的:
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(btnShow, "translationX", 0, 300);ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(btnShow, "rotation", 0, 360);AnimatorSet animatorSet = new AnimatorSet();animatorSet.setDuration(2000);animatorSet.playTogether(objectAnimator,objectAnimator1);animatorSet.start();
达到的效果是:
初见
然而,还能用下面的方法实现这个效果:
btnShow.animate() .setDuration(2000) .translationX(300) .rotation(360) .start();
简单了很多有没有 !
概述
平常所做的动画大部分是针对View的,而View经常会需要集中动画混合在一起做,因此提供了一个ViewPropertyAnimator类来快速的实现多个动画的混合。
ViewPropertyAnimator对同时进行多个动画进行了性能优化,虽然有多个动画同时进行,但是一次只刷新一次ui,不会让每个动画都去刷新ui。而且很明显他的写法非常简单。
获取ViewPropertyAnimator
只能通过View.animate()获取ViewPropertyAnimator。
常用方法
这里把能链式调用的全列举出来,感受一下他的方便之处:
btnShow.animate() .setDuration(5000) //透明度 .alpha(0) .alphaBy(0) //旋转 .rotation(360) .rotationBy(360) .rotationX(360) .rotationXBy(360) .rotationY(360) .rotationYBy(360) //缩放 .scaleX(1) .scaleXBy(1) .scaleY(1) .scaleYBy(1) //平移 .translationX(100) .translationXBy(100) .translationY(100) .translationYBy(100) .translationZ(100) .translationZBy(100) //更改在屏幕上的坐标 .x(10) .xBy(10) .y(10) .yBy(10) .z(10) .zBy(10) //监听及其他设置 .setInterpolator(new BounceInterpolator()) .setStartDelay(1000) .setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }) .setUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { } }) .withEndAction(new Runnable() { @Override public void run() { Log.i(TAG, "run: end"); } }) .withStartAction(new Runnable() { @Override public void run() { Log.i(TAG, "run: start"); } }) .start();
- 动画的方法名和ObjectAnimator中药填写的属性名是一样的,很容易明白。
- 每个动画都有一个By的后缀的方法。加上By的意思是,继续动画这么多数值。不加By的意思是动画到这个数值。
- 也可以设置插值器和Animator.AnimatorListener监听以及ValueAnimator.AnimatorUpdateListener监听
- 可以直接设置动画开始和结束时的回调方法。
- 但是好像没有重复动画的功能
关于By
下面用旋转来演示一下By的区别。
按钮初始旋转角度已经旋转了90, 当点击按钮执行的动画是下面这样的时候,表示旋转到180:
btnShow.animate() .setDuration(2000) .rotation(180) .start();
第一次点击会从90旋转到180,再次点击会从180旋转到180,因为已经是180了,所以看着没动。
如果是By呢?:
btnShow.animate() .setDuration(2000) .rotationBy(180) .start();
0 0
- Android属性动画--ViewPropertyAnimator
- Android动画-属性动画-ViewPropertyAnimator
- Android 动画总结-ViewPropertyAnimator
- 属性动画系列之ViewPropertyAnimator
- Android 属性动画Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析,Interpolator和ViewPropertyAnimator的用法
- Android属性动画解析,Interpolator和ViewPropertyAnimator的用法
- Android属性动画(下),InterPolator、ViewPropertyAnimator和布局动画的用法
- Android ViewPropertyAnimator:让动画变得简单起来!
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- [BZOJ 4008][HNOI2015]亚瑟王:期望DP
- 锥
- UltraWinGrid使用心得(C#)
- UML——在Visual Studio 2013/2015中设计UML类图
- squid简易配置透明代理
- Android动画-属性动画-ViewPropertyAnimator
- 第一篇博客
- 测试神器Swagger的应用
- TextView部分文本点击处理
- 指定文件夹调用dll,dll里面又调用dll
- 两种方法实现点击图片调用上传功能
- 使用statsvn 统计代码行数等项目信息
- 解决Mac OS 下编译Hadoop Annotations 程序包com.sun.javadoc找不到问题
- 互联网手机卡汇总