属性动画(PropertyAnimator)笔记
一,通过XML文件来实现动画
1,在res新建一个名为animator的文件夹(文件夹名必须为animator,否者系统找不到),
2,(实现单个动画)在上文件夹中新建一个xml文件,选择根为ObjectAnimator的项,
即:单个动画
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000" //动画持续时间
android:repeatCount="1" //动画重复次数
android:repeatMode="reverse"//动画重复模式,有restart,从开头开始,reverse反向开始
android:valueFrom="1.0"
android:valueTo="1.5"
android:propertyName="scaleX"> //android:propertyName="scaleX"是用来实现反射,表示
</objectAnimator> 要实现什么动画,这是是水平缩放动画,
//多个动画组合
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="3000"
android:repeatCount="0"
android:propertyName="scaleX"
android:repeatMode="restart"
android:valueFrom="1.0"
android:valueTo="1.5">
</objectAnimator>
<objectAnimator
android:duration="3000"
android:repeatCount="0"
android:propertyName="scaleY"
android:repeatMode="restart"
android:valueFrom="1.0"
android:valueTo="1.5" >
</objectAnimator>
</set>
3,然后在activity中,来实现动画
//通过xml文件的objectAnimator修改属性实现单个动画效果
ObjectAnimator scaleXanimator=(ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.scalex);
scaleXanimator.setTarget(btn1);
scaleXanimator.start();
//通过xml文件修的set改属性实现多个动画组合效果
AnimatorSet animatorSet=(AnimatorSet) AnimatorInflater.loadAnimator(this,R.animator.scale);
animatorSet.setTarget(btn2);
animatorSet.start();
二、通过java代码实现动画
单个动画:
ObjectAnimator colorAnimator=ObjectAnimator.ofInt(view, "backgroundColor",
Color.RED,Color.GREEN,Color.BLUE);
colorAnimator.setDuration(1000);
colorAnimator.start();
多个组合动画:
//AnimatorSet组合动画应用可以使用playtogether一次性加载,也可以直接用play逐条加载
AnimatorSet myanimatorSet=new AnimatorSet();
// myanimatorSet.playTogether(
// ObjectAnimator.ofFloat(btn3, "translationX", 0,500,250),
// ObjectAnimator.ofFloat(btn3, "rotationX", 0,360,180),
// ObjectAnimator.ofFloat(btn3, "alpha", 1,0,1));
myanimatorSet.play(ObjectAnimator.ofFloat(btn3, "translationX", 0,500,250));
myanimatorSet.play(ObjectAnimator.ofFloat(btn3, "rotationX", 0,360,180));
myanimatorSet.play(ObjectAnimator.ofFloat(btn3, "alpha", 1,0,1));
myanimatorSet.setDuration(5000);
myanimatorSet.start();
一,通过XML文件来实现动画
1,在res新建一个名为animator的文件夹(文件夹名必须为animator,否者系统找不到),
2,(实现单个动画)在上文件夹中新建一个xml文件,选择根为ObjectAnimator的项,
即:单个动画
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000" //动画持续时间
android:repeatCount="1" //动画重复次数
android:repeatMode="reverse"//动画重复模式,有restart,从开头开始,reverse反向开始
android:valueFrom="1.0"
android:valueTo="1.5"
android:propertyName="scaleX"> //android:propertyName="scaleX"是用来实现反射,表示
</objectAnimator> 要实现什么动画,这是是水平缩放动画,
//多个动画组合
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="3000"
android:repeatCount="0"
android:propertyName="scaleX"
android:repeatMode="restart"
android:valueFrom="1.0"
android:valueTo="1.5">
</objectAnimator>
<objectAnimator
android:duration="3000"
android:repeatCount="0"
android:propertyName="scaleY"
android:repeatMode="restart"
android:valueFrom="1.0"
android:valueTo="1.5" >
</objectAnimator>
</set>
3,然后在activity中,来实现动画
//通过xml文件的objectAnimator修改属性实现单个动画效果
ObjectAnimator scaleXanimator=(ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.scalex);
scaleXanimator.setTarget(btn1);
scaleXanimator.start();
//通过xml文件修的set改属性实现多个动画组合效果
AnimatorSet animatorSet=(AnimatorSet) AnimatorInflater.loadAnimator(this,R.animator.scale);
animatorSet.setTarget(btn2);
animatorSet.start();
二、通过java代码实现动画
单个动画:
ObjectAnimator colorAnimator=ObjectAnimator.ofInt(view, "backgroundColor",
Color.RED,Color.GREEN,Color.BLUE);
colorAnimator.setDuration(1000);
colorAnimator.start();
多个组合动画:
//AnimatorSet组合动画应用可以使用playtogether一次性加载,也可以直接用play逐条加载
AnimatorSet myanimatorSet=new AnimatorSet();
// myanimatorSet.playTogether(
// ObjectAnimator.ofFloat(btn3, "translationX", 0,500,250),
// ObjectAnimator.ofFloat(btn3, "rotationX", 0,360,180),
// ObjectAnimator.ofFloat(btn3, "alpha", 1,0,1));
myanimatorSet.play(ObjectAnimator.ofFloat(btn3, "translationX", 0,500,250));
myanimatorSet.play(ObjectAnimator.ofFloat(btn3, "rotationX", 0,360,180));
myanimatorSet.play(ObjectAnimator.ofFloat(btn3, "alpha", 1,0,1));
myanimatorSet.setDuration(5000);
myanimatorSet.start();