属性动画的一些说明

来源:互联网 发布:激活码淘号软件 编辑:程序博客网 时间:2024/05/29 09:15
  1. 属性动画的一些说明:  
  2. 1. ObjectAnimator 对象动画,当一个view同时拥有某一属性的getter、setter方法时,则可以使用该动画,来操作这一属性。  
  3. 2. ValueAnimator 操作的范围比较广,通过Interpolator和TypeEvaluator得到某一时间内的值;再用监听器,监听值的变化,做相应的操作。  
  4. 3. ValueAnimator 和ObjectAnimator(它是前者的子类)的静态的一些of方法,创建自身对象。  
  5.    也可以new 一个无参的对象,再设置相应的values。  
  6.    ofInt()、ofFloat()、ofObject()、ofPropertyValuesHolder()。  
  7.      这几个方法的实现也就是new 一个无参的对象,再设置相应的values。  
  8.   
  9. 4. ValueAnimator 的调用流程:  
  10.   a. 初始化ValueAnimator后,设置一个values。这时就有了一个PropertyViewHolder对象pvh。  
  11.      可以直接调用setValues设置它PVH对象;或setInt|Float|ObjectValues  
  12.      方法内部会生成一个PVH  
  13.      PVH内部维护一个KeyframeSet和TypeEvaluator。PVH根据不同的values来初始化KeyframeSet和  
  14.      TypeEvaluator实现方法中的startValue和endValue就从KeyframeSet中的Keyframe中获取  
  15.   b. 设置TypeEvaluator,传递到pvh中。  
  16.   c. 设置Interpolator。 ValueAnimator中默认的插入器为AccelerateDecelerateInterpolator  
  17.   d. ValueAnimator的animationFrame(long currentTime),当有动画应该结束时返回true,否则返回false。  
  18.      方法内,算出动画运行的时间比率fraction,再调用animateValue(float fraction)。  
  19.   e. ValueAnimator的animateValue(float fraction),调用插入器,得到一个按某一规则得到的fraction,  
  20.      再调用 pvh.calculateValue(fraction);pvh调用KeyframeSet的getValue(fraction);  
  21.      KeyframeSet内部再调用TypeEvaluator的evaluate(fraction,T startValue, T endValue)。  
  22.      startValue、endValue是通过Keyframe的getValue()来获取的。  
  23.   f. evaluate(),方法内拿到了时间比率fraction,可以自行根据一定规则,返回value T。  
  24.   g. 给ValueAnimator添加一个AnimatorUpdateListener。监听的回调方法:  
  25.       onAnimationUpdate(ValueAnimator animation) {   
  26.          T obj = (T)animation.getAnimatedValue();//取得计算器计算出的某段时间内的T值。  
  27.          // 操作 obj  
  28.      }  
0 0