Tween Animation代码实现效果

1,补间动画(Tween Animation)

  • a. 补间动画(支持四种类型:平移(Translate)、旋转(Rotate)、缩放(Scale)、不透明度(Alpha)。

  • b. 只是显示的位置变动,View的实际位置未改变,表现为View移动到其他地方,点击事件仍在原处才能响应。(这个是重点,比如你设了控件点击事件,动画结束后,你点你看到的控件位置,是不会响应的,点原来的位置可以响应,这就是补间动画只是显示位置变动,实际位置没有改变)

  • c. 组合使用步骤较复杂。

  • d. View Animation 也是指此补间动画。

2,代码实现补间动画:

【1】透明动画(AlphaAnimation

    //[1]创建一个透明动画  1.0代表完全不透明  0.0完全透明

        AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f);

        //[2]设置动画执行的时长

        aa.setDuration(2000);

        //[3]设置动画执行重复次数

        aa.setRepeatCount(1);

        //[4]设置重复的模式

        aa.setRepeatMode(Animation.REVERSE);

        //[3]iv执行动画

        iv.startAnimation(aa);

【2】旋转动画(RotateAnimation)    

    // 创建旋转动画

        // RotateAnimation ra = new RotateAnimation(0, 360);

        // 0.5f代表当前控件宽*0.5

        // Animation.RELATIVE_TO_SELF 相对于自身

        RotateAnimation ra = new RotateAnimation(0, 360,

                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

                0.5f);

        // [2]设置动画执行的时长

        ra.setDuration(2000);

        // [3]设置动画执行重复次数

        ra.setRepeatCount(1);

        // [4]设置重复的模式

        ra.setRepeatMode(Animation.REVERSE);

        // [3]iv执行动画

        iv.startAnimation(ra);
扫描二维码关注公众号,回复: 4575822 查看本文章

【3】缩放动画(ScaleAnimation)    

    // 缩放(放大 缩小)1.0默认   3.0f是大三倍。

        ScaleAnimation sa = new ScaleAnimation(1.0f, 3.0f, 1.0f, 3.0f,

                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

                0.5f);

        // [2]设置动画执行的时长

        sa.setDuration(2000);

        // [3]设置动画执行重复次数

        sa.setRepeatCount(1);

        // [4]设置重复的模式

        sa.setRepeatMode(Animation.REVERSE);

        // [3]iv执行动画

        iv.startAnimation(sa);

【4】位移动画(TranslateAnimation)  

  // 创建一个位移动画 最后一个参数 慎用整数

        //RELATIVE_TO_PARENT 相对于父布局

        TranslateAnimation ta = new TranslateAnimation(

                Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT,

                0, Animation.RELATIVE_TO_PARENT, 0,

                Animation.RELATIVE_TO_PARENT, 0.2f);

        // [2]设置动画执行的时长

        ta.setDuration(2000);



        // 当动画执行完毕后 停留在结束位置

        ta.setFillAfter(true);

        // [3]iv执行动画

        iv.startAnimation(ta);

【5】动画集合(AnimationSet) --- 使用    set.addAnimation(aa)添加开启动画


 

// [1]创建动画的合集

        AnimationSet set = new AnimationSet(true);

        // [1]创建一个透明动画 1.0代表完全不透明 0.0完全透明

        AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f);

        // [2]设置动画执行的时长

        aa.setDuration(2000);

        // [3]设置动画执行重复次数

        aa.setRepeatCount(1);

        // [4]设置重复的模式

        aa.setRepeatMode(Animation.REVERSE);

      

        RotateAnimation ra = new RotateAnimation(0, 360,

                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

                0.5f);

        // [2]设置动画执行的时长

        ra.setDuration(2000);

        // [3]设置动画执行重复次数

        ra.setRepeatCount(1);

        // [4]设置重复的模式

        ra.setRepeatMode(Animation.REVERSE);



        ScaleAnimation sa = new ScaleAnimation(1.0f, 3.0f, 1.0f, 3.0f,

                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

                0.5f);

        // [2]设置动画执行的时长

        sa.setDuration(2000);

        // [3]设置动画执行重复次数

        sa.setRepeatCount(1);

        // [4]设置重复的模式

        sa.setRepeatMode(Animation.REVERSE);



        TranslateAnimation ta = new TranslateAnimation(

                Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT,

                0, Animation.RELATIVE_TO_PARENT, 0,

                Animation.RELATIVE_TO_PARENT, 0.2f);

        // [2]设置动画执行的时长

        ta.setDuration(2000);



        // 当动画执行完毕后 停留在结束位置

        ta.setFillAfter(true);

        // 往动画合集里面添加动画

        set.addAnimation(aa);

        set.addAnimation(ra);

        set.addAnimation(sa);

        set.addAnimation(ta);

        

        //执行动画

        iv.startAnimation(set);

猜你喜欢

转载自blog.csdn.net/Cricket_7/article/details/85090912
今日推荐