您的位置:首页 > 编程语言

安卓动画代码实现

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

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型的参数。    
 




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

转载请注明地址:/article/10706587.html

QQ学习交流群:66295909 欢迎你的加入,让我们一起进步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: