首页 > 系统 > Android > 正文

笔记之android动画 初识ValueAnimator 属性动画

2019-11-09 17:30:06
字体:
来源:转载
供稿:网友

学习于大神博客

http://blog.csdn.net/harvic880925/article/details/50525521

在Android动画中,总共有两种类型的动画View Animation(视图动画)和PRoperty Animator(属性动画);

View Animation包括Tween Animation(补间动画)和Frame Animation(逐帧动画); Property Animator包括ValueAnimator和ObjectAnimation;

引入属性动画的原因:

1.Property Animator能实现补间动画无法实现的功能 2,.View Animation仅能对指定的控件做动画,而Property Animator是通过改变控件某一属性值来做动画的。 3.补间动画虽能对控件做动画,但并没有改变控件内部的属性值。而Property Animator则是恰恰相反,Property Animator是通过改变控件内部的属性   值来    达到动画效果的

ValueAnimator 的使用:

第一步:创建ValueAnimator实例

[java] view plain copy 在CODE上查看代码片ValueAnimator animator = ValueAnimator.ofInt(0,400);  animator.setDuration(1000);  animator.start();%20 第二步:添加监听添加监听:[java] view%20plain copy ValueAnimator animator = ValueAnimator.ofInt(0,400);  animator.setDuration(1000);    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {      @Override      public void onAnimationUpdate(ValueAnimator animation) {          int curValue = (int)animation.getAnimatedValue();  %20 %20 %20     }  });  animator.start();%20 alueAnimator只负责对指定的数字区间进行动画运算我们需要对运算过程进行监听,然后自己对控件做动画操作

ValueAnimator%20的常用方法:

ofInt与ofFloat传进去的值列表,就表示动画时的变化范围常用函数/**  * 设置动画时长,单位是毫秒  */  ValueAnimator setDuration(long duration)  /**  * 获取ValueAnimator在运动时,当前运动点的值  */  Object getAnimatedValue();  /**  * 开始动画  */  void start()  /**  * 设置循环次数,设置为INFINITE表示无限循环  */  void setRepeatCount(int value)  /**  * 设置循环模式  * value取值有RESTART,REVERSE,  */  void setRepeatMode(int value)  /**  * 取消动画  */  void cancel()%20 

ValueAnimator%20的不常用方法:

/**  * 延时多久时间开始,单位是毫秒  */  public void setStartDelay(long startDelay)  /**  * 完全克隆一个ValueAnimator实例,包括它所有的设置以及所有对监听器代码的处理  */  public ValueAnimator clone()%20 

两个监听器:

监听器animator.addUpdateListener,以监听动画过程中值的实时变化/**  * 监听器一:监听动画变化时的实时值  */  public static interface AnimatorUpdateListener {      void onAnimationUpdate(ValueAnimator animation);  }  //添加方法为:public void addUpdateListener(AnimatorUpdateListener listener)  /**  * 监听器二:监听动画变化时四个状态  */  public static interface AnimatorListener {      void onAnimationStart(Animator animation);      void onAnimationEnd(Animator animation);      void onAnimationCancel(Animator animation);      void onAnimationRepeat(Animator animation);  }%20 监听器2%20中的1当动画开始时,会调用 %20 %202当动画结束时,会调用 %20 %203当动画取消时,调用4当动画重复时,会调用取消监听移除监听器:

[java] view%20plain copy 派生到我的代码片/**  * 移除AnimatorUpdateListener  */  void removeUpdateListener(AnimatorUpdateListener listener);  void removeAllUpdateListeners();   /**   * 移除AnimatorListener   */  void removeListener(AnimatorListener listener);  void removeAllListeners();  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表