Androidにおける属性アニメーションの基本的な使い方(まとめ)
8100 ワード
属性アニメーションが現れる意味:補間アニメーションの不足を補い、実現できない効果を実現する.
アトリビュートアニメーションの実装メカニズム:ターゲットオブジェクトに値を割り当て、そのアトリビュートを変更することによって実装されます.
アトリビュートアニメーションの共通クラス:
(1)ValueAnimatorクラス:Value値に対するアニメーション遷移効果操作クラス.(あまり使われていません)
(2)ObjectAnimatorクラス:これはViewオブジェクトに対するアニメーション遷移効果操作クラスである.(重要!!)
(3)AnimatorSetクラス:アニメーション効果を組み合わせた操作クラスです.(重要!!)
アトリビュートアニメーションの一般的なアニメーション効果:
(1)フェードアウト
JAVAコード:
XML(アニメーションファイル):
(2)回転効果
JAVAコード:
XMLアニメーションファイル:
(3)移動効果
JAVAコード:
XMLアニメーションファイル:(上のように考えるには、下をコンビネーションアニメーションに変更し、フェードアウトしたXMLアニメーションファイルを参照)
(4)ズーム効果
JAVAコード:
XMLアニメーションファイル:
(5)アニメーション効果を組み合わせる
JAVAコード:
XMLアニメーションファイル:
XMLアニメーションファイルはどのように作成しますか?
resフォルダの下にanimatorフォルダを作成します.これらのアニメーションファイルはこのanimatorフォルダの下に作成する必要があります.
XMLアニメーションファイルはどのように使用しますか?
Animatorアニメーションオブジェクトはどのようにリスニング操作を追加しますか?
追加:
Animatorオブジェクトには他にもいくつかの方法があります:(XMLアニメーションファイルで設定すると、効果は同じです!)
setStartDelay():アニメーションの再生遅延時間を設定します.
setRepeatCount():アニメーションのループ再生回数.-1は無限ループ再生を表します.
setRepeatMode():アニメーションループ再生モード.(ValueAnimator.RESTARTとValueAnimator.REVERSEの2モード、すなわち再再生と逆再生の2モード)
setInterpolator():これはアニメーションの再生速度を制御するために使用されます(システムは速度を制御するモードが多く、必要に応じてネットで調べることができます).よく使われる均一速度は以下の通りです.
アニメーションの再生速度の一般的な方法は次のとおりです.
xmlでプロパティを設定できます
コードでも設定できますが、順序効果は同じです.
特に注意!!!
プロパティアニメーションは上のいくつかのアニメーションスタイルだけではありません!!アトリビュートアニメーションの本質は、ターゲットオブジェクトのアトリビュートを変更することでアニメーション効果を実現するためです.では、ビューオブジェクトのアトリビュートであれば、アトリビュートアニメーション効果の修正を行うことができます.
完全なDemoアドレス:https://download.csdn.net/download/lpcrazyboy/10724059
アトリビュートアニメーションの実装メカニズム:ターゲットオブジェクトに値を割り当て、そのアトリビュートを変更することによって実装されます.
アトリビュートアニメーションの共通クラス:
(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