Android动画总结

来源:互联网 发布:哈尔滨蓝网网络直播 编辑:程序博客网 时间:2024/06/06 00:46

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);