Android 动画之属性动画(2)

4. 指定KeyFrame(关键帧)
  一个KeyFrame对象由一个时间/值对组成, 可以用它定义一个动画在一个特定时间的状态. 每一个KeyFrame可以指定它自己的插值器, 用于控制上一个关键帧和当前关键帧中间这段时间的行为.

5. 给View做动画
  属性动画系统比视图动画系统多了一些优点. 视图动画系统只是改变View的绘制方式, 但并不改变View本身. 如点击事件的响应的位置不会因为绘制的位置不同而改变. 属性动画可以通过改变View对象的真实属性做动画. 然后View自动调用它的invalidate()方法刷新屏幕.
  View中可以做属性动画的属性有
  translationX和translationY:控制View的位置
  rotation, rotationX, rotationY:控制在2D和3D坐标系中相对于坐标原点的旋转.
  scaleX, scaleY:控制一个View对象相对于坐标原点的缩放.
  pivotX, pivotY:View对象进行旋转和缩放所发生的点的位置, 默认为View对象的中心.
  x, y:描述View在其容器中的最终位置.
  alpha:View的透明度.

5.1 使用ViewPropertyAnimator做动画
      ViewPropertyAnimator可以给几个属性做并行动画处理, 它的行为和ObjectAnimator很像,但是做多属性的动画时会更加高效.
      PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 50f);
      PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 100f);
      ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start();

5.2 在XML中声明动画
      为了区分新的属性动画API, 应该把属性动画的xml文件放在res/animator中而不是res/anim.
      xml中支持如下三个标签
      ValueAnimator - <animator>
      ObjectAnimator - <objectAnimator>
      AnimatorSet - <set>

<set Android:ordering="sequentially">
    <set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>
    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>
</set>

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.anim.property_animator);
set.setTarget(myObject);
set.start();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0918f2e55fe723eb746bd23089338403.html