安卓动画代码实现

  

    在设计中为了实现各种各样的效果,会经常使用到安卓的效果动画,今天把这些知识梳理汇总了一下,分享给大家

   

    QQ学习交流群:66295909    欢迎你的加入,让我们一起进步  


1. AlphaAnimation (透明度动画)

  
     RelativeLayout rl_splash = (RelativeLayout) findViewById(R.id.rl_splash);

     //播放动画效果
     AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);

     animation.setDuration(2000);           //设置Alpha动画的持续时间

     rl_splash.setAnimation(animation);     //播放Alpha动画 



2. RotateAnimation (旋转动画)

     //相对于自身的哪个位置旋转,这里是相对于自身的右下角
     RotateAnimation ra = new RotateAnimation(0, 360, //从哪旋转,旋转多少度
                                              Animation.RELATIVE_TO_SELF, 1.0f, 
                                              Animation.RELATIVE_TO_SELF, 1.0f);

     ra.setDuration(800); //设置动画时间
        
     ra.setRepeatCount(Animation.INFINITE); //设置动画重复次数,Animation.INFINITE(-1)表示无限次,源码里面只要设定值小于0,都表示无限次循环

     ra.setRepeatMode(Animation.RESTART);   //设置重复的模式
                                            //RESTART:重新从头开始执行。
                                            //REVERSE:反方向执行。
     iv_scan.startAnimation(ra);            
 

3. ScaleAnimation(缩放动画)

     ScaleAnimation(float fromX, float toX, float fromY, float toY) //缩放动画的构造函数 分别是XY尺寸的缩放因子0f~1f


4. TranslateAnimation(位移动画)


    //位移动画的构造函数 1
    TranslateAnimation(float fromXDelta, floattoXDelta, float fromYDelta, float toYDelta)
     //这个是我们最常用的一个构造方法,  
     //float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;
   //float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;
   //float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;
   //float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;
   //如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C点(x+toXDelta,y+toYDelta)点.


    //位移动画的构造函数 2
    TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue) //fromXType:第一个参数是x轴方向的值的参照(Animation.ABSOLUTE,Animation.RELATIVE_TO_SELF,or Animation.RELATIVE_TO_PARENT);
   //fromXValue:第二个参数是第一个参数类型的起始值;
   //toXType,toXValue:第三个参数与第四个参数是x轴方向的终点参照与对应值;
   //后面四个参数就不用解释了。如果全部选择Animation.ABSOLUTE,其实就是第二个构造函数。
     //以x轴为例介绍参照与对应值的关系:
     //如果选择参照为Animation.ABSOLUTE,那么对应的值应该是具体的坐标值,比如100到300,指绝对的屏幕像素单
     //如果选择参照为Animation.RELATIVE_TO_SELF或者Animation.RELATIVE_TO_PARENT指的是相对于自身或父控件,对应值应该理解为相对于自身或者父控件的几倍或百分之多少。多试参数就明白了。



 

5. AnimationSet (多组动画)

    ScaleAnimation sa = new ScaleAnimation(0.2f, 1.0f, 0.4f,1.0f);//缩放的动画效果,1.0f就代表窗体的总宽或者高
    sa.setDuration(400);
    TranslateAnimation ta = new TranslateAnimation(//位移动的动画效果
              Animation.RELATIVE_TO_SELF, 0,//指定这个位置是相对于谁
              Animation.RELATIVE_TO_SELF, 0.1f,
              Animation.RELATIVE_TO_SELF, 0,
              Animation.RELATIVE_TO_SELF, 0);
    ta.setDuration(300);
    AnimationSet set = new AnimationSet(false);//如果想播放多种动画的组合,这里就要用到了AnimationSet
    set.addAnimation(sa);
    set.addAnimation(ta);
    contentView.startAnimation(set); // 播放一组动画. 


6. Frame动画(帧动画)

    AnimationDrawable ad = new AnimationDrawable(); //构造动画对象
    ad.addFrame(frame, duration)//设置每一帧的资源和时间
    image.setImageDrawable(ad); //将上边建的Frame动画通过背景资源设置给图片
    if (!ad.isRunning()) {
         ad.start();  //播放
    }
    //当然这种动画也可以通过xml文件的方式实现,我们主要讲解代码创建动画,这里就不过多说了
  


7.常用方法

   
    animation.setDuration(800); //设置动画时间
        
    animation.setRepeatCount(Animation.INFINITE); //设置动画重复次数,Animation.INFINITE(-1)表示无限次,源码里面只要设定值小于0,都表示无限次循环

    animation.setRepeatMode(Animation.RESTART);   //设置重复的模式 

    animation.setFillAfter(true); //保持动画播放完成后的状态

    animation.setInterpolator(new LinearInterpolator());//指定动画的运行效果,效果参考下面的对象
    
    Interpolator //定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速度
    AccelerateDecelerateInterpolator//延迟减速,在动作执行到中间的时候才执行该特效。
    AccelerateInterpolator//会使慢慢以(float)的参数降低速度。    
    LinearInterpolator//平稳不变的    
    DecelerateInterpolator//在中间加速,两头慢    
    CycleInterpolator//曲线运动特效,要传递float型的参数。     
     

 

    好了,关于安卓代码创建这些基本的动画就说到这,希望可以帮到大家!

    转载请注明地址:http://blog.csdn.net/u010058586/article/details/45896695

    QQ学习交流群:66295909    欢迎你的加入,让我们一起进步

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值