Android 中补间动画包括下面四种:

1.透明度动画 (AlphaAnimation)

2.缩放动画 (ScaleAnimation)

3.平移动画 (TranslateAnimation)

4.旋转动画 (RotateAnimation)

补间动画是专门针对View 的。只能应用于View。

具体使用 

AlphaAnimation

补间动画可以使用Java代码创建也可以使用xml文件创建。在Java代码中创建透明度动画:

AlphaAnimation alphaAnimation = new AlphaAnimation(1f, 0f);alphaAnimation.setDuration(1000);imageView.startAnimation(alphaAnimation);

使用xml文件创建,需要在res文件夹下新建一个anim文件夹,所有的补间动画全部放在此文件夹下。

<?xml version="1.0" encoding="utf-8"?>

属性含义:  fromAlpha    动画开始时View的透明度    1为完全不透明  0为完全透明  取值为0~1                                                                           toAlpha        动画结束时View的透明度                                                                                                                                               duration       动画持续时间 单位为毫秒                                                                                                                         

在Java代码中使用AnimationUtils来加载动画并开始该动画:

Animation alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha_anim);imageView.startAnimation(alphaAnimation);

ScaleAnimation

在Java代码中创建缩放动画

ScaleAnimation scaleAnimation = new ScaleAnimation(1f, 2f, 1f, 2f,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);scaleAnimation.setDuration(1000);imageView.startAnimation(scaleAnimation);

使用xml文件创建,

<?xml version="1.0" encoding="utf-8"?>

属性含义:  fromXScale    动画开始时X轴方向上的缩放系数                                                                                                                                toXScale         动画结束时X轴方向上的缩放系数                                                                                                                              fromYScale    动画开始时Y轴方向上的缩放系数                                                                                                                                toYScale        动画结束时Y轴方向上的缩放系数                                                                                                                                pivotX            X轴方向上的缩放的轴点   值可以是具体值  百分比  百分比p(如50%p)  例如50 代表pivotX 为当前执行动画的View的左上角加上50px为轴点。 50%代表当前执行动画的View的左上角加上View宽的50%为轴点。50%p代表当前执行动画的View的左上角加上该View的父View宽的50%为轴点。                                                                                                                                pivotY           Y轴方向上的缩放的轴点。取值同pivotX。

在Java代码中加载并开始该动画                             

Animation scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.scale_anim);imageView.startAnimation(scaleAnimation);

TranslateAnimation

在Java代码中创建平移动画

TranslateAnimation translateAnimation = new                 TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0f,        Animation.RELATIVE_TO_SELF, 0.5f);translateAnimation.setDuration(1000);imageView.startAnimation(translateAnimation);

 使用xml文件创建,

<?xml version="1.0" encoding="utf-8"?>

属性含义:  fromXDelta   动画开始时X轴方向上的移动距离。值可以是具体值  百分比  百分比p(如50%p)                                                         toXDelta       动画结束时X轴方向上的移动距离。值可以是具体值  百分比  百分比p(如50%p)                                                          fromYDelta   动画结束时Y轴方向上的移动距离。值可以是具体值  百分比  百分比p(如50%p)                                                          toYDelta       动画结束时Y轴方向上的移动距离。值可以是具体值  百分比  百分比p(如50%p)

在Java代码中加载并开始该动画

Animation translateAnimation = AnimationUtils.loadAnimation(this,                     R.anim.translate_anim);imageView.startAnimation(translateAnimation);

RotateAnimation

在Java代码中创建旋转动画

RotateAnimation rotateAnimation = new RotateAnimation(0f, 180f,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);rotateAnimation.setDuration(1000);imageView.startAnimation(rotateAnimation);

使用xml文件创建,

<?xml version="1.0" encoding="utf-8"?>

属性含义:  fromDegrees    动画开始时的角度                                                                                                                                                      toDegrees        动画结束时的角度      正直表示顺时针旋转    负值表示逆时针旋转                                                                          pivotX               旋转的中心点X轴坐标    取值和ScaleAnimation 的pivotX一样                                                                                  pivotY               旋转的中心点Y轴坐标                                                  

在Java代码中加载并开始该动画

Animation rotateAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate_anim);imageView.startAnimation(rotateAnimation);

注意:scaleAnimation 和 rotateAnimation 中的pivotX 和 pivotY可以看成是一个钉子钉在该坐标点上在进行缩放或旋转。在计算pivotX和pivotY的值的时候要注意。不管是具体指,还是百分比 或 百分比p。都是以进行动画的View的左上角为原点来计算。即50%是以该View的中间位置作为轴点。但是50%p就不是以该View的父View的中心位置作为轴点。而是以该View的左上角加上该View的父View的宽高的一半作为轴点。这一点需要注意。

 AnimationSet 

Android 还提供了一个AnimationSet类来组合使用补间动画。 

在Java代码中使用AnimationSet

AnimationSet set1 = new AnimationSet(true);        AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);alphaAnimation.setDuration(1000);ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.5f, 1.0f, 0.5f,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);scaleAnimation.setDuration(1000);AnimationSet set2 = new AnimationSet(true);set2.addAnimation(new RotateAnimation(0, 360,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f));set2.addAnimation(new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0,        Animation.RELATIVE_TO_SELF, 0.5f));set2.setDuration(2000);set2.setStartOffset(1000);set1.addAnimation(alphaAnimation);set1.addAnimation(scaleAnimation);set1.addAnimation(set2);//开始动画imageView.startAnimation(set1);

同样我们可以在xml文件中创建AnimationSet

<?xml version="1.0" encoding="utf-8"?>                                

 上面的属性一看就懂。不做过多解释。

补间动画还提供了一些控制动画的方法。                                                                                                                               setRepeatCount(int repeatCount);        设置动画的播放次数. 不包括第一次执行的次数. 比如设置为1.表示动画执行2次.如果要让动画一直重复,可以传入一个小于0的数.如 -1。                                                                                                                             setRepeatMode(int repeatMode);          设置动画的重复播放的模式,包括Animation.RESTART(重复播放) Animation.REVERSE(倒序播放)                                                                                                                                                         setFillAfter(boolean fillAfter)                   设置动画在执行完毕后是否停留在最后一帧,默认为false。                                                 setStartOffset(long startOffset)               设置动画延时。

监听动画的执行    我们有时候需要在动画执行开始前  执行结束后执行一些操作可以监听视图动画的执行。调用Animation.setAnimationListener(); 比如我们要监听TranslateAnimation动画

TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f,        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0f,        Animation.RELATIVE_TO_SELF, 0.5f);translateAnimation.setDuration(1000);translateAnimation.setAnimationListener(new Animation.AnimationListener() {    @Override    public void onAnimationStart(Animation animation) {    }    @Override    public void onAnimationEnd(Animation animation) {    }    @Override    public void onAnimationRepeat(Animation animation) {    }});imageView.startAnimation(translateAnimation);

 

 

                     

更多相关文章

  1. Android5.X之百分比布局库(percent-support-lib) 解析与扩展
  2. Android使用glide加载gif动画设置播放次数
  3. 移动端页面的特点
  4. Android(安卓)属性动画ValueAnimator与插值器详解
  5. Android(安卓)动画效果(一)
  6. Android(安卓)popupwindow在指定控件正下方滑动弹出效果
  7. Android面试题(数据存储、view篇)
  8. Android(安卓)ItemTouchHelper实现RecyclerView交互动画
  9. Android图片动画播放

随机推荐

  1. C语言自定义函数(图文详解)
  2. c语言和vb语言的区别是什么?
  3. C语言中fputc函数的用法
  4. 小白程序员C++入门学习书籍(书单)
  5. c++中new的用法详解
  6. C程序的注释只能是一行吗?
  7. continue在C语言中什么意思?
  8. c++运算符重载的方法有哪些
  9. c语言中的“且”用什么符号表示?
  10. c语言怎么输出特殊符号?