属性动画,属性动画组合队列详解 ValueAnimator ObjectAnimator AnimatorSet
来源:互联网 发布:手机安全防护软件 编辑:程序博客网 时间:2024/06/06 01:00
属性动画跟早些的补间动画最大的差别应该是补间动画只是个绘画的展示效果,duang duang duang都是特技,是假的,属性动画是view本身的属性真的跟着动画改变的,是真的。
ValueAnimator 使用姿势:
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,1.0f); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Float animatedValue = (Float) animation.getAnimatedValue(); getGuideHand().setAlpha(animatedValue); } });
也可以加个listener做一些动画开始前,结束,取消或者重复时候的动作
valueAnimator.addListener(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) { } });
valueAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { } });
在ValueAnimator中,我们需要在onAnimationUpdate中实现自己想要实现的动画效果,非常灵活,灵活的同时也是稍有些麻烦,下面要说的ObjectAnimator 就不需要,ObjectAnimator 继承自ValueAnimator,我们只要指定要改变的属性值就可以了。
ObjectAnimator.ofFloat(tv, "Alpha", 0f, 1f).start();嗯 没错,就只有这一句实现了上述ValueAnimator的透明度动画。。。
不过还是有几个注意点,参数二 属性值不需要关注首字母大小写问题,但是动画对象必须要有相对应的set方法,(如果valueFrom或者valueTo有为null的,那get方法也必须要有)
ObjectAnimator.ofFloat(iv_red_package, "ScaleX", 0, 1);
ObjectAnimator.ofFloat(iv_top, "translationY", iv_top.getMeasuredHeight(), 0);
ObjectAnimator.ofFloat(iv_halo, "Rotation", 0, 360);
属性动画可以通过AnimatorSet来排序动画播放顺序。with同时播放,before,after之前之后播放。比如:
AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(anim1).before(anim2).before(anim3); animatorSet.start();很好理解,先放anim1,再放anim2,再放anim3,很简单对不对。错!正确的结果是anim1完后anim2,anim3同时播放。啪啪啪,敲重点。play方法会创建一个Builder,同时,play方法传入的动画对象会成为一个节点,之后的所有不管是before,after还是with,都会以这个节点作为目标节点。所以,优雅的写法是一对一对得写:
AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(anim1).before(anim2); animatorSet.play(anim2).before(anim3);
这样才是anim1,anim2,anim3顺序播放
阅读全文
0 0
- 属性动画,属性动画组合队列详解 ValueAnimator ObjectAnimator AnimatorSet
- Android-Animator属性动画( ObjectAnimator , AnimatorSet , ValueAnimator )
- Android属性动画(ObjectAnimator、PropertyValuesHolder、ValueAnimator、AnimatorSet)
- 属性动画:ObjectAnimator、PropertyValuesHolder、ValueAnimator、AnimatorSet
- Android 属性动画,Animator,ValueAnimator,ObjectAnimator, AnimatorSet
- 逐帧动画 补间动画 属性动画ObjectAnimator ValueAnimator AnimatorSet)演示 TypeEvaluator
- 属性动画ValueAnimator和ObjectAnimator
- Android属性动画之ObjectAnimator和AnimatorSet
- Android属性动画之ObjectAnimator和AnimatorSet
- 安卓属性动画ValueAnimator与ObjectAnimator详解
- 属性动画详解之ObjectAnimator、ValueAnimator、PropertyValuesHolder、Keyframe 之间关系
- 属性动画ValueAnimator和ObjectAnimator的使用
- Android 动画之属性动画ValueAnimator和ObjectAnimator
- [动画]属性动画ObjectAnimator及ValueAnimator运用分析
- Android动画-属性动画-AnimatorSet
- Android中的属性动画(一般属性动画,组合属性动画,AnimatorSet,动画监听)
- android属性动画 —— ValueAnimator和ObjectAnimator的例子
- 安卓 属性动画 ValueAnimator ObjectAnimator 源码分析 关键处
- JVM(java 虚拟机)内存设置
- C++ MoveFileA Error code is 0x2
- C++学习笔记
- Recall, Precision, and Average Precision
- spring + springMVC + spring Data jpa + maven 项目框架搭建
- 属性动画,属性动画组合队列详解 ValueAnimator ObjectAnimator AnimatorSet
- LINUX下定时执行PHP文件
- 小岛面积
- TCP连接建立与结束(三次握手与4次挥手)
- Android开发之--studio中配置svn
- 进程与线程详解
- Java 时间戳进行比较
- python http应用
- Kafka+Spark Streaming+Redis实时系统实践