1.属性动画
属性动画可以实现补间动画中的透明度、缩放、旋转、平移动画的效果;相比于补间动画,属性动画是属性改变,而补间动画只是显示的效果,属性并未发生改变。
2.透明度属性动画(alpha)
2.1 xml文件方法实现:
(1)xml文件(如下):
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="alpha"
android:valueFrom="0"
android:valueTo="1"
android:duration="3000"
>
</objectAnimator>
(2)MainActivity.java 代码:
private void animatorAlphy() {
System.out.println();
//加载动画文件。
ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.alphy_animator);
// iv.setAlpha(alpha);
//设置目标控件。
anim.setTarget(iv);
//执行动画。
anim.start();
}
2.2 java代码实现方法:
public void animation_alphy_java(){
ObjectAnimation obj=ObjectAnimator.ofFloat(iv, "alpha", 0, 1);//创建对象。
//设置过程参数
obj.setDuration(3000);
obj.start();//开启动画
}
3.旋转属性动画(rotate)
3.1 xml文件方法实现:
(1)xml文件(如下):
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="rotationX"
android:valueFrom="0"
android:valueTo="360"
android:duration="3000"
>
</objectAnimator>
(2) MainActivity.java 代码:
//旋转动画
private void animatorRotate() {
ObjectAnimator animator_roate = (ObjectAnimator) AnimatorInflater.loadAnimator(this,
R.animator.rotate_animator);
animator_roate.setTarget(iv);
animator_roate.start();
}
3.2 java代码方法
/**
* 用java代码实现旋转属性动画。
*/
private void animatorRotateJava() {
ObjectAnimator animator = ObjectAnimator.ofFloat(iv,"rotation",0,360);
// iv.setRotation();
animator.setDuration(3000);
animator.start();
}
4.平移属性动画(translate)
4.1 xml方法
(1)xml文件;
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="x"
android:valueFrom="1"
android:valueTo="3"
android:valueType="floatType"
android:duration="4000"
>
</objectAnimator>
(2)MainActivity.java 代码
//平移动画
private void animatorTranslate() {
ObjectAnimator aimator_translate = (ObjectAnimator) AnimatorInflater.loadAnimator(this,
R.animator.translate_animator);
aimator_translate.setTarget(iv);
aimator_translate.start();
}
4.2 java代码方法
private void animatorTranslate_java(){
ObjectAnimator animator=ObjectAnimator.ofFloat(iv,"transition",0,200,0);
animator.setDuration(3000);
animator.start();
}
5.缩放属性动画(scale)
5.1 xml方法
(1)xml文件:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="2"
android:duration="3000"
android:valueType="floatType"
>
</objectAnimator>
(2)MAinActivity,java代码:
private void animationScale(){
ObjectAnimator animator=(ObjectAnimator)AnimatorInflater.loadAnimator(this,R.animator.scale_animator);
animator.setTarget(iv);
animator.start();
}
5.2 java代码方法
//缩放动画---java代码
private void animatorScale_java() {
//创建对象。
/**
* ObjectAnimator---->ValueAnimator--->Animator
*/
ObjectAnimator anim = ObjectAnimator.ofFloat(iv, "scaleX", 1, 2, 1.5f);
// iv.setScaleX();//属性名称为set后面的单词,记得首字母小写
anim.setDuration(4000);
//启动动画
anim.start();
}
6.集合动画
6.1 xml方法
(1) xml文件:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together"
>
<set android:ordering="together">
<objectAnimator
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="2"
android:duration="3000"
></objectAnimator>
<objectAnimator
android:propertyName="scaleY"
android:valueFrom="1"
android:valueTo="2"
android:duration="3000"
></objectAnimator>
</set>
<objectAnimator
android:propertyName="alpha"
android:valueFrom="0.5"
android:valueTo="1"
android:duration="3000"
></objectAnimator>
</set>
(2)MAinActivity.java代码:
//集合动画
private void animatorAll() {
AnimatorSet aimator_all = (AnimatorSet) AnimatorInflater.loadAnimator(this,R.animator.set_animator);
aimator_all.setTarget(iv);//如果没有写,会出现NullPointExcelption
aimator_all.start();
}
6.2 java代码方法
private void animatorScaleJava() {
AnimatorSet set = new AnimatorSet();
ObjectAnimator animator_x = ObjectAnimator.ofFloat(iv,"scaleX",1,2);
animator_x.setDuration(3000);
ObjectAnimator animator_y = ObjectAnimator.ofFloat(iv, "scaleY", 1, 2);
animator_x.setDuration(3000);
set.playTogether(animator_x,animator_y);
}