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

 

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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值