Android动画总结
Android动画(一):View动画,也叫做补间动画,两种实现方式:
第一种是code代码实现:
ScaleAnimation scaleAnimation = new ScaleAnimation(0f,1.5f,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0);
scaleAnimation.setFillAfter(true); //播放完毕后停止
scaleAnimation.setStartOffset(1000);//延迟一秒后播放
scaleAnimation.setDuration(2000);
iv_animation.setAnimation(scaleAnimation);
//一般code实现动画,基本几行就可以完成,更改动画效果,只需要变动
一般code实现动画,基本几行就可以完成,更改动画效果,只需要变动,实例化Animation下的子类即可。
如旋转,缩放,平移,透明等,分别是:
ScaleAnimation 缩放 = new ScaleAnimation();
RotateAnimation 旋转= new RotateAnimation();
AlphaAnimation 透明度 = new AlphaAnimation();
TranslateAnimation 平移 = new TranslateAnimation();
AnimationSet 复合动画(动画集合)= new AnimationSet(true);
第二种是Xml文件实现:
res文件夹下创建anim文件夹,存放动画资源,然后通过以代码调用动画资源:
AnimationUtils animationUtils = new AnimationUtils();
Animation animation = animationUtils.loadAnimation(this, R.anim.cusset);
iv_animation.setAnimation(animation);
Android动画(二):Frame动画,也叫做帧动画,就好比以前的动画片一样,将图片循环播放:
首先制作一个res-drawable文件夹下的xml文件:并且设置成imageview的背景图
代码引用文件,开启动画:
Android动画(三):属性动画:通过代码实现属性动画,
也可以将属性动画设置成XML文件,必须是放到animtor文件夹下:
通过代码实现属性动画效果,rotation旋转的例子:
ValueAnimator oa = ObjectAnimator.ofFloat(iv,"rotation",new float[]{90f,-90f});
oa.setDuration(500);
oa.setRepeatCount(ObjectAnimator.INFINITE);
oa.setRepeatMode(ObjectAnimator.REVERSE);
iv.setPivotX(iv.getWidth()/2);
iv.setPivotY(0-iv.getHeight()*2);
oa.start();
通过引用Xml文件实现属性动画效果:
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.cusobjectanim);
animator.setTarget(login_main);
animator.start();
Android动画(四):值动画,可以进行监听传值方法的动画:
ValueAnimator animator = ValueAnimator.ofFloat(0,360);
animator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (Float) animation.getAnimatedValue();
Log.e(TAG,value);
}
});
Android动画(五):属性动画PropertyValuesHolder的混合使用:
PropertyValuesHolder a1 = PropertyValuesHolder.ofFloat("scaleX",0.5f, 1f);
PropertyValuesHolder a2 = PropertyValuesHolder.ofFloat("scaleY",0.5f, 1f);
ObjectAnimator animator3 = ObjectAnimator.ofPropertyValuesHolder(view,a1,a2);
animator3.setDuration(2000);
animator3.setInterpolator(new JellyInterpolator());//动画速度的变化
animator3.start();
Android动画(六):Activity跳转动画:
直接引用XML动画文件,不论是补间动画,还是属性动画,都可以,
最后在Activity加载的时候,重写父类的方法,
第一个参数是进入,第二个参数是退出.
overridePendingTransition(R.anim.alpha_anim,R.anim.scale_anim);