25动画的小结

Android中的动画 Animation

一,Frame Animation 帧动画
每一张静止的图片 依次展示出来 利用人眼的错觉 形成动画

XML 步骤:
     * 1,在res/drawable获取xml的Frame 动画<animation-list>  </>
     * 2,在xml中  添加item  drawable:每一帧动画的图片    duration:每一帧显示的时间
     * 3,在layout布局中  给ImagView 设置成背景图片
     * 4,在逻辑代码获取动画  管理动画
Java 步骤:
    1,获取AnimationDrawable对象
    2,AnimationDrawable添加动画视图
    3,动画设置给图片控件

二,Tween Animation 补间动画 设置开始 和结束的动画 中间部分 由系统补齐
主要有:alpha(透明度),scale(缩放),rotate(旋转),translate(位移)
XML步骤:
1,在res创建一个文件夹anim
2,在anim文件夹 添加动画
3, iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_alpha));

JAVA步骤:
    1,创建动画对象 
    2,给动画对象设置属性
    3,开启动画



    Animation rotate = new RotateAnimation(0,720,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
    Animation alpha = new AlphaAnimation(1.0f,0.0f);

    //  true  使用的是set默认的插值器
    //  false 使用自身动画的插值器
    AnimationSet animationSet = new AnimationSet(false);

    //添加动画到集合
    animationSet.addAnimation(rotate);
    animationSet.addAnimation(alpha);

    //设置动画时间
    animationSet.setDuration(3000);

    //启动动画
    iv.startAnimation(animationSet);

三,Property Animation 属性动画 3.0以后才有的 是补间动画的加强般
属性动画指明任何动画

1,XML步骤:
    1,在res创建animtor文件夹 
    2,在animtor文件夹添加动画xml
    3, 使用动画填充器  将xml布局的动画添加进来
            Animator animator = AnimatorInflater.loadAnimator(MainActivity.this,R.animator.background_object);
            animator.setTarget(iv);//设置操作对象
            animator.start();
2,Java步骤:
    1,创建动画对象
    2,设置时间
    3,开启动画


    //获取属性动画的集合对象
            AnimatorSet animatorSet = new AnimatorSet();

            ObjectAnimator translateY = ObjectAnimator.ofFloat(iv,"translationY",0,200,100,300);
            translateY.setDuration(3000);

            ObjectAnimator rotateY = ObjectAnimator.ofFloat(iv,"rotation",0,-720,720);
            rotateY.setDuration(3000);

            //第一种方式  执行   note:同一个动画只能执行一次   play(),with(),before(),after()

// animatorSet.play(translateY).with(rotateY);
// animatorSet.start();

            //第二种方式
            List<Animator> list = new ArrayList<>();
            list.add(translateY);
            list.add(rotateY);
           // animatorSet.playTogether(list);//同步执行
            animatorSet.playSequentially(list);//依次执行

            animatorSet.start();

posted on 2016-09-26 19:59  木鱼哥  阅读(110)  评论(0编辑  收藏  举报

导航