android属性动画2

来源:互联网 发布:js获取鼠标点击坐标 编辑:程序博客网 时间:2024/06/05 17:45

1:使用xml文件创建属性动画

首先在res下建立animator文件夹,然后建立res/animator/scalex.xml

  1. <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:duration="1000"  
  3.     android:propertyName="scaleX"  
  4.     android:valueFrom="1.0"  
  5.     android:valueTo="2.0"  
  6.     android:valueType="floatType" >  
  7. </objectAnimator
  1. public void scaleX(View view)  
  2.     {  
  3.         // 加载动画  
  4.         Animator anim = AnimatorInflater.loadAnimator(this, R.animator.scalex);  
  5.         anim.setTarget(mMv);  
  6.         anim.start();  
  7.     }  
AnimatorSet:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:ordering="together" >  
  4.   
  5.     <objectAnimator  
  6.         android:duration="1000"  
  7.         android:propertyName="scaleX"  
  8.         android:valueFrom="1"  
  9.         android:valueTo="0.5" >  
  10.     </objectAnimator>  
  11.     <objectAnimator  
  12.         android:duration="1000"  
  13.         android:propertyName="scaleY"  
  14.         android:valueFrom="1"  
  15.         android:valueTo="0.5" >  
  16.     </objectAnimator>  
  17.   
  18. </set>  
  1.  Animator anim = AnimatorInflater.loadAnimator(this, R.animator.scale);  
  2.         mMv.setPivotX(0);  
  3.         mMv.setPivotY(0);  
  4.         //显示的调用invalidate  
  5.         mMv.invalidate();  
  6.         anim.setTarget(mMv);  
  7.         anim.start();  
2:布局动画

使用LayoutTransition

  1. LayoutTransition transition = new LayoutTransition();  
  2.     transition.setAnimator(LayoutTransition.CHANGE_APPEARING,  
  3.             transition.getAnimator(LayoutTransition.CHANGE_APPEARING));  
  4.     transition.setAnimator(LayoutTransition.APPEARING,  
  5.             null);  
  6.     transition.setAnimator(LayoutTransition.DISAPPEARING,  
  7.             null);  
  8.     transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING,  
  9.             null);  
  10.     mGridLayout.setLayoutTransition(transition);  

过渡的类型一共有四种:

LayoutTransition.APPEARING 当一个View在ViewGroup中出现时,对此View设置的动画

LayoutTransition.CHANGE_APPEARING 当一个View在ViewGroup中出现时,对此View对其他View位置造成影响,对其他View设置的动画

LayoutTransition.DISAPPEARING  当一个View在ViewGroup中消失时,对此View设置的动画

LayoutTransition.CHANGE_DISAPPEARING 当一个View在ViewGroup中消失时,对此View对其他View位置造成影响,对其他View设置的动画

LayoutTransition.CHANGE 不是由于View出现或消失造成对其他View位置造成影响,然后对其他View设置的动画。

注意动画到底设置在谁身上,此View还是其他View。

下面的例子展示的是只对布局中view的x大小值进行设置

  1. mTransition.setAnimator(LayoutTransition.APPEARING, (mAppear  
  2.                 .isChecked() ? ObjectAnimator.ofFloat(this"scaleX"01)  
  3.                 : null));  

0 0