2017-04-06 7 views
1

私はそこにXML内の二つの要素があるとValueAnimator別名<objectAnimator>とValueAnimatorの違いは<animator>ですか?

前者は、オブジェクトのプロパティをアニメーション化するために使用されますが、リンク先のページが提供される定義と混同してしまった。https://developer.android.com/guide/topics/resources/animation-resource.html

を読むことが分かった、アンドロイドでアニメーションを学び始めましたどちらである:「時間の指定された量を超えるアニメーションを実行ValueAnimatorを表し、」

ザ・両方のタグが同じ属性を持っている:

<objectAnimator 
    android:propertyName="string" 
    android:duration="int" 
    android:valueFrom="float | int | color" 
    android:valueTo="float | int | color" 
    android:startOffset="int" 
    android:repeatCount="int" 
    android:repeatMode=["repeat" | "reverse"] 
    android:valueType=["intType" | "floatType"]/> 

<animator 
    android:duration="int" 
    android:valueFrom="float | int | color" 
    android:valueTo="float | int | color" 
    android:startOffset="int" 
    android:repeatCount="int" 
    android:repeatMode=["repeat" | "reverse"] 
    android:valueType=["intType" | "floatType"]/> 

誰もが違い、いつ何を使用するかを説明することができます? すべての回答とコメントをいただければ幸いです。

答えて

8

ObjectAnimatorはValueAnimatorのサブクラスです。

ValueAnimator animator = ValueAnimator.ofFloat(0, 1); 
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator animation) { 
     view.setAlpha((Float) animation.getAnimatedValue()); 
    } 
}); 
animator.start(); 
ObjectAnimatorが独自にこれの世話をします

主な違いは、あなたがonAnimationUpdate(...)メソッドをオーバーライドする必要がValueAnimatorの場合はどこにアニメーションの値を適用する場所を指定するということです
ObjectAnimator.ofFloat(view, View.ALPHA, 0, 1).start(); 

XMLの場合、objectAnimatorの "propertyName"に注意してください。これはアニメータタグにはありません。

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
       android:duration="1000" 
       android:repeatCount="1" 
       android:repeatMode="reverse"> 
    <propertyValuesHolder android:propertyName="x" android:valueTo="400"/> 
    <propertyValuesHolder android:propertyName="y" android:valueTo="200"/> 
</objectAnimator> 

および/またはアニメーションフレームをカスタマイズ:

<animator xmlns:android="http://schemas.android.com/apk/res/android" 
      android:duration="1000" 
      android:repeatCount="1" 
      android:repeatMode="reverse"> 
    <propertyValuesHolder> 
     <keyframe android:fraction="0" android:value="1"/> 
     <keyframe android:fraction=".2" android:value=".4"/> 
     <keyframe android:fraction="1" android:value="0"/> 
    </propertyValuesHolder> 
</animator> 
0

<objectAnimator>タグを使用して、アルファ(視認性)、位置Xまたは位置Y(両方ではない)などのアイテムの単一のプロパティをアニメートできます。 <animator>タグは、任意のプロパティを変更するために使用できます。これは単なる時間の定義です。アニメーション値を計算してターゲットオブジェクトに設定するアニメーションを実行するためのシンプルなタイミングエンジンを提供します。

+0

は「タイミングエンジン」と計算して、より混乱してき

はまた、あなたが、同時にいくつかのプロパティをアニメーション化することができ、API 23から始まります「アニメーション化された価値」の –

+0

誰かがより良い方法で質問に答えることができますか? –

関連する問題