在设计中为了实现各种各样的效果,会经常使用到安卓的效果动画,今天把这些知识梳理汇总了一下,分享给大家
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 欢迎你的加入,让我们一起进步