Android 动画(二) 属性动画

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);
    }

猜你喜欢

转载自blog.csdn.net/LewisWang_/article/details/52145515