详解Android Material Design自定义动画的编写

2019-12-10 18:30:06于海丽

<pathInterpolator xmlns:android="http://www.easck.com/apk/res/android"
  android:controlX1="0.4"
  android:controlY1="0"
  android:controlX2="1"
  android:controlY2="1"/>

系统提供了三种基本的曲线,XML资源:

  • @interpolator/fast_out_linear_in.xml
  • @interpolator/fast_out_slow_in.xml
  • @interpolator/linear_out_slow_in.xml

    您可以用PathInterpolator对象作Animator.setInterpolator()方法的参数。

    ObjectAnimator类有新构造函数使您能够激活坐标沿着一个path同时使用两种或两种以上的属性。比如,如下的animator就使用了一个path 对象,来同时操作View的x和y属性:

    ObjectAnimator mAnimator;
    mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
    ...
    mAnimator.start();
    

    Animate View State Changes  视图状态改变动画

    StateListAnimator类允许您定义动画运行时视图的状态变化。下面的例子演示如何在xml中定义一个StateListAnimator:

    <!-- animate the translationZ property of a view when pressed -->
    <selector xmlns:android="http://www.easck.com/apk/res/android">
     <item android:state_pressed="true">
      <set>
       <objectAnimator android:propertyName="translationZ"
        android:duration="@android:integer/config_shortAnimTime"
        android:valueTo="2dp"
        android:valueType="floatType"/>
        <!-- you could have other objectAnimator elements
           here for "x" and "y", or other properties -->
      </set>
     </item>
     <item android:state_enabled="true"
      android:state_pressed="false"
      android:state_focused="true">
      <set>
       <objectAnimator android:propertyName="translationZ"
        android:duration="100"
        android:valueTo="0"
        android:valueType="floatType"/>
      </set>
     </item>
    </selector>