Androidにおける属性アニメーションの基本的な使い方(まとめ)

8100 ワード

属性アニメーションが現れる意味:補間アニメーションの不足を補い、実現できない効果を実現する.
アトリビュートアニメーションの実装メカニズム:ターゲットオブジェクトに値を割り当て、そのアトリビュートを変更することによって実装されます.
アトリビュートアニメーションの共通クラス:
(1)ValueAnimatorクラス:Value値に対するアニメーション遷移効果操作クラス.(あまり使われていません)
(2)ObjectAnimatorクラス:これはViewオブジェクトに対するアニメーション遷移効果操作クラスである.(重要!!)
(3)AnimatorSetクラス:アニメーション効果を組み合わせた操作クラスです.(重要!!)
アトリビュートアニメーションの一般的なアニメーション効果:
(1)フェードアウト
JAVAコード:
ObjectAnimator animator = ObjectAnimator.ofFloat(tvEffectShow, "alpha", 1f, 0f, 1f);
animator.setDuration(3000);
animator.start();

XML(アニメーションファイル):



    

    


(2)回転効果
JAVAコード:
ObjectAnimator animator = ObjectAnimator.ofFloat(tvEffectShow, "rotation", 1f, 360f);
animator.setDuration(3000);
animator.start();

XMLアニメーションファイル:


(3)移動効果
JAVAコード:
//       x  
Float transitionX = tvEffectShow.getTranslationX();
ObjectAnimator animator = ObjectAnimator.ofFloat(tvEffectShow, "translationX"
        , transitionX, -1000f, transitionX);
animator.setDuration(3000);
animator.start();

XMLアニメーションファイル:(上のように考えるには、下をコンビネーションアニメーションに変更し、フェードアウトしたXMLアニメーションファイルを参照)


(4)ズーム効果
JAVAコード:
ObjectAnimator animator = ObjectAnimator.ofFloat(tvEffectShow, "scaleY", 1f, 3f, 1f);
animator.setDuration(3000);
animator.start();

XMLアニメーションファイル:


(5)アニメーション効果を組み合わせる
JAVAコード:
AnimatorSet animatorSet = new AnimatorSet();

Float transitionX = tvEffectShow.getTranslationX();
ObjectAnimator animatorTranslationX = ObjectAnimator.ofFloat(tvEffectShow, "translationX"
        , transitionX, -1000f, transitionX);

ObjectAnimator animatorScaleY = ObjectAnimator.ofFloat(tvEffectShow, "scaleY", 1f, 3f, 1f);

ObjectAnimator animatorRotation = ObjectAnimator.ofFloat(tvEffectShow, "rotation", 1f, 360f);

animatorSet.setDuration(5000);
animatorSet.play(animatorTranslationX).with(animatorScaleY).before(animatorRotation);
animatorSet.start();

XMLアニメーションファイル:



    

    

        

        

            

            

        

        

        

    


XMLアニメーションファイルはどのように作成しますか?
resフォルダの下にanimatorフォルダを作成します.これらのアニメーションファイルはこのanimatorフォルダの下に作成する必要があります.
XMLアニメーションファイルはどのように使用しますか?
//         XML    
Animator animator = AnimatorInflater.loadAnimator(mContext, R.animator.anim_alpha);
//    
animator.setDuration(3000);
// View        
animator.setTarget(tvEffectShow);
//      
animator.start();

Animatorアニメーションオブジェクトはどのようにリスニング操作を追加しますか?
//        
animator.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        Toast.makeText(mContext, "      ", Toast.LENGTH_SHORT).show();
        super.onAnimationEnd(animation);
    }

    @Override
    public void onAnimationRepeat(Animator animation) {
        Toast.makeText(mContext, "      ", Toast.LENGTH_SHORT).show();
        super.onAnimationRepeat(animation);
    }

    @Override
    public void onAnimationStart(Animator animation) {
        Toast.makeText(mContext, "      ", Toast.LENGTH_SHORT).show();
        super.onAnimationStart(animation);
    }
});

追加:
Animatorオブジェクトには他にもいくつかの方法があります:(XMLアニメーションファイルで設定すると、効果は同じです!)
setStartDelay():アニメーションの再生遅延時間を設定します.
setRepeatCount():アニメーションのループ再生回数.-1は無限ループ再生を表します.
setRepeatMode():アニメーションループ再生モード.(ValueAnimator.RESTARTとValueAnimator.REVERSEの2モード、すなわち再再生と逆再生の2モード)
setInterpolator():これはアニメーションの再生速度を制御するために使用されます(システムは速度を制御するモードが多く、必要に応じてネットで調べることができます).よく使われる均一速度は以下の通りです.
//    
LinearInterpolator lir = new LinearInterpolator();
animator.setInterpolator(lir);

アニメーションの再生速度の一般的な方法は次のとおりです.
xmlでプロパティを設定できます
android:interpolator="@android:anim/accelerate_interpolator"          (         )  
  
android:interpolator="@android:anim/decelerate_interpolator"          (         )  
  
android:interpolator="@android:anim/accelerate_decelerate_interpolator"            (           )  
  
android:interpolator="@android:anim/anticipate_interpolator"        ,         (       ,        ,       )  
  
android:interpolator="@android:anim/anticipate_overshoot_interpolator"        ,        ,          (        )  
  
android:interpolator="@android:anim/bounce_interpolator"              (             ,         )  
  
android:interpolator="@android:anim/cycle_interpolator"   ,        ,          :Math.sin(2* mCycles* Math.PI* input)  
  
android:interpolator="@android:anim/linear_interpolator"         
  
android:interpolator="@android:anim/overshoot_interpolator"     ,        

コードでも設定できますが、順序効果は同じです.
animation.setInterpolator(new AccelerateInterpolator());  
  
animation.setInterpolator(new DecelerateInterpolator());  
  
animation.setInterpolator(new AccelerateDecelerateInterpolator());  
  
animation.setInterpolator(new AnticipateInterpolator());  
  
animation.setInterpolator(new AnticipateOvershootInterpolator());  
  
animation.setInterpolator(new BounceInterpolator());  
  
animation.setInterpolator(new CycleInterpolator(2));  
  
animation.setInterpolator(new LinearInterpolator());  
  
animation.setInterpolator(new OvershootInterpolator());  

特に注意!!!
プロパティアニメーションは上のいくつかのアニメーションスタイルだけではありません!!アトリビュートアニメーションの本質は、ターゲットオブジェクトのアトリビュートを変更することでアニメーション効果を実現するためです.では、ビューオブジェクトのアトリビュートであれば、アトリビュートアニメーション効果の修正を行うことができます.
 
完全なDemoアドレス:https://download.csdn.net/download/lpcrazyboy/10724059