属性动画
通过xml文件获取动画 帧动画 AnimationDrawable 类 使用 AnimationDrawable background = (AnimationDrawable) iv.getBackground()获取 文件夹 res/drawable 根标签 <animation-list> AnimationDrawable类 补间动画 Animation 类及其子类 使用AnimationUtils类的loadAnimation()方法加载xml定义的动画 文件夹 res/anim 根标签 <alpha> AlphaAnimation类 根标签 <rotate> RotareAnimation类 根标签 <scale> ScaleAnimation类 根标签 <translate> TranslateAnimation类 根标签 <set> AnimatoinSet类 属性动画 Animator 类及其子类 使用AnimatorInflater类的loadAnimator()方法加载xml定义的动画 文件夹 res/animator 根标签 <animator> 对应的是 ValueAnimator 类 <objectAnimator> 对应的是ObjectAnimator 类 <set> 对应的是AnimatorSet类 *
属性动画是andorid 3.0以后出来的
对比 帧动画(AnimationDrawable) 通过view的 background 来加载加载 路径 drawable文件夹
或者通过 AniamatonDrawable类加载
补间动画(Animation)通过AnimationUtils.loadAnimation()方法加载 res/anim文件夹
或者通过Animation 的子类 使用
(alpha(淡入)、scale(缩放)、translate(平移)、rotate(旋转))
都是作用在view上的,并没有改变view的属性,只是视觉上的改变,view的位置并没有发生变化
属性动画 animator,可以作用在属性上,是我们的动画更加强大 路径在 res/animator文件夹下
描述:在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果
核心类 ValueAnimator 和 ObjectAnimator
valueAnimator类如何使用
在xml文件中使用
<animator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000" android:fillAfter="false" android:fillBefore="true" android:fillEnabled="true" android:interpolator="interpolator_resource" android:repeatCount="0" android:repeatMode="restart" android:startOffset="1000" android:valueFrom="0" android:valueTo="100" android:valueType="intType" />
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.scale); animator.setTarget(iv); //设置给view animator.start();
通过java实现
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 500); valueAnimator.setDuration(2000); valueAnimator.start(); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { int currentValue = (Integer) animation.getAnimatedValue(); iv.getLayoutParams().width = currentValue; iv.requestLayout(); //请求重新绘制 } });
/* 通过Java 代码形式 补间动画 AlphaAnimation alphaAnimation=new AlphaAnimation(0,1); alphaAnimation.setDuration(2000); iv.startAnimation(alphaAnimation); 属性动画 ObjectAnimator.ofFloat(iv, "scaleX", 1.0f, 3.0f); Alpha 控制View的透明度 float TranslationX 控制X方向的位移 float TranslationY 控制Y方向的位移 float ScaleX 控制X方向的缩放倍数 float ScaleY 控制Y方向的缩放倍数 float Rotation 控制以屏幕方向为轴的旋转度数 float RotationX 控制以X轴为轴的旋转度数 float RotationY 控制以Y轴为轴的旋转度数 float * */