Androidの属性アニメーション(デモケース付き)

Demo源码

クリック:Githubの-アニメーション

プロパティアニメーション(プロパティアニメーション)

  • カテゴリ:透明アニメーション、回転アニメーション、変位アニメーション、ズームアニメーション、アニメーションの組み合わせ
  • 執筆:コード動的に設定されたプロパティ、二つの方法で定義されたXMLファイルの属性を使用します

アニメーションのトゥイーンと異なる点:

  • プロパティのアニメーションは、コントロールの位置を変更することができます
  • 回転、変位、方向のみを指定することができ、アニメーションをズーム(X軸、Y軸)

あなたはトゥイーン定義するXMLを使用する必要がある場合は
まずリソースパスのresディレクトリに作成:(名前が間違っていることはできません)アニメーター
、セカンドを RES /アニメーターディレクトリ内のXMLファイルを作成し、ルートノードでなければなりません。 若しくは それはアニメーションの組み合わせであれば、ルートノードでなければなりません。 (具体的には資料のコード例を参照)

透明なアニメーション

propertyNameの:アルファ

コード例1(コードセット特性)

//不透明-完全透明-半透明(会停留在最后的设置效果上)
ObjectAnimator alpha = ObjectAnimator.ofFloat(ivView, "alpha", 1, 0, 0.5f);
alpha.setDuration(2000);
alpha.start();

//上下代码等效
//        ObjectAnimator oa = new ObjectAnimator();
//        oa.setTarget(ivView);
//        oa.setPropertyName("alpha");
//        oa.setFloatValues(1, 0, 0.5f);
//        oa.setDuration(2000);
//        oa.start();

コード例2(XMLで属性を設定)

  • R.animator.animator_my_alpha
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
                android:duration="2000"
                android:propertyName="alpha"
                android:repeatCount="1"
                android:valueFrom="1"
                android:valueTo="0.5f"
                android:repeatMode="reverse">
</objectAnimator>

<!-- 外层可以使用 animator 包裹-->
<!-- 外层也可以不使用 animator 包裹-->

<!--<animator xmlns:android="http://schemas.android.com/apk/res/android">-->
<!--<objectAnimator-->
        <!--android:duration="2000"-->
        <!--android:propertyName="alpha"-->
        <!--android:repeatCount="1"-->
        <!--android:valueFrom="1"-->
        <!--android:valueTo="0.5f"-->
        <!--android:repeatMode="reverse">-->
<!--</objectAnimator>-->
<!--</animator>-->
  • コールXML
ObjectAnimator animator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.animator_my_alpha);
animator.setTarget(ivView);
animator.start();

回転アニメーション

プロパティ名:回転(回転の中心の周り)、れるrotationX(X軸周りの回転)、rotationY(Y軸周りの回転)

コード例1(コードセット特性)

ObjectAnimator rotationX = ObjectAnimator.ofFloat(ivView, "rotation", 0, 180, 90, 360);
rotationX.setDuration(2000);
rotationX.start();

コード例2(XMLで属性を設定)

  • R.animator.animator_my_rotation
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
                android:duration="2000"
                android:propertyName="rotation"
                android:repeatCount="2"
                android:repeatMode="reverse"
                android:valueFrom="0"
                android:valueTo="180">
</objectAnimator>
  • コールXML
ObjectAnimator animator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.animator_my_rotation);
animator.setTarget(ivView);
animator.start();

変位アニメーション

プロパティ名:translationX(X軸方向)、translationY(Y軸方向)

コード例1(コードセット特性)

ObjectAnimator translationY = ObjectAnimator.ofFloat(ivView, "translationY", 0, 100, 0, 100);
translationY.setDuration(2000);
translationY.start();

コード例2(XMLで属性を設定)

  • R.animator.animator_my_translation_y
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
                android:duration="2000"
                android:propertyName="translationX"
                android:repeatCount="2"
                android:repeatMode="reverse"
                android:valueFrom="0"
                android:valueTo="200">
</objectAnimator>
  • コールXML
ObjectAnimator animator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.animator_my_translation_y);
animator.setTarget(ivView);
animator.start();

ズームアニメーション

プロパティ名:scaleXプロパティ(X軸方向)、scaleYの(Y軸方向)

コード例1(コードセット特性)

ObjectAnimator scaleY = ObjectAnimator.ofFloat(ivView, "scaleY", 1, 0.5f, 1, 0.5f);
scaleY.setDuration(2000);
scaleY.start();

コード例2(XMLで属性を設定)

  • R.animator.animator_my_scale_y
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
                android:duration="2000"
                android:propertyName="scaleY"
                android:repeatCount="2"
                android:repeatMode="reverse"
                android:valueTo="2"
                android:valueFrom="1">
</objectAnimator>
  • コールXML
ObjectAnimator animator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.animator_my_scale_y);
animator.setTarget(ivView);
animator.start();

アニメーションの組み合わせ

playSequentially順次すべてのアニメーションを実行
playTogether:すべてのアニメーションに沿って行わ
1.コード例(コードセット特性)

AnimatorSet set = new AnimatorSet();
ObjectAnimator alpha = ObjectAnimator.ofFloat(ivView, "alpha", 1, 0.5f, 1);
ObjectAnimator rotation = ObjectAnimator.ofFloat(ivView, "rotation", 0, 180, 90, 360);
ObjectAnimator translationY = ObjectAnimator.ofFloat(ivView, "translationY", 0, 100, 0, 100);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(ivView, "scaleY", 1, 2, 1, 0.5f);
set.setDuration(3000);
//playSequentially:依次执行所有的动画
set.playSequentially(alpha, rotation, translationY, scaleY);
//playTogether:把所有的动画一起执行
//set.playTogether(alpha, rotationX, translationY, scaleY);

set.start(); //切记:要start

コード例2(XMLで属性を設定)

  • R.animator.animator_my_set1
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="together">
    <objectAnimator
        android:duration="2000"
        android:propertyName="translationX"
        android:repeatCount="2"
        android:repeatMode="reverse"
        android:valueFrom="0"
        android:valueTo="200" />
    <objectAnimator
        android:duration="2000"
        android:propertyName="translationY"
        android:repeatCount="2"
        android:repeatMode="reverse"
        android:valueFrom="0"
        android:valueTo="200" />
</set>
  • R.animator.animator_my_set2
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:ordering="together">
    <set android:ordering="sequentially">
        <objectAnimator
                android:duration="1000"
                android:propertyName="translationX"
                android:repeatCount="2"
                android:repeatMode="reverse"
                android:valueFrom="0"
                android:valueTo="200"/>
        <objectAnimator
                android:duration="1000"
                android:propertyName="translationY"
                android:repeatCount="2"
                android:repeatMode="reverse"
                android:valueFrom="0"
                android:valueTo="200"/>
    </set>
    <objectAnimator
            android:duration="2000"
            android:propertyName="rotationX"
            android:repeatCount="2"
            android:repeatMode="reverse"
            android:valueFrom="0"
            android:valueTo="180"/>
</set>
  • コールXML
//AnimatorSet animator = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animator_my_set1);
AnimatorSet animator = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.animator_my_set2);
animator.setTarget(ivView);
animator.start();

PS:
トゥイーン:こちらをクリックしてください

フレームアニメーション:こちらをクリックしてください

おすすめ

転載: www.cnblogs.com/io1024/p/11584719.html